라즈베리 파이 네트워크를 구축 중입니다.ADS-B수화기. 여러 노드가 집, 오두막, 부모 등 다양한 위치에 배치됩니다. 모두 다음과 같이 설정되어 있습니다.집에 전화 해에아마존-EC2역방향 SSH 터널을 사용하십시오.
내가 정말로 달성하고 싶은 것은 어떤 노드가 어떤 노드인지, 그리고 해당 노드에 대한 SSH에 사용되는 로컬 포트를 구별하는 방법입니다.
sudo netstat -tlpe --numeric-ports | grep sshd
어떤 사용자가 프로세스를 실행하고 있는지 보여주기 때문에 각 터널에 사용자를 할당하는 것을 고려하고 있습니다. SSH 역방향 터널의 사용자를 제한하고 싶습니다. 가급적이면 모든 노드 키를 동일한 파일에 보관하고 다른 모든 사용자를 위해 보관하고 싶습니다 authorized_keys
.StrictModes yes
결국 다음 명령을 실행했습니다.
sudo groupadd sshtungrp
sudo useradd sshtunnel -m -d /home/sshtunnel -s /bin/true -g sshtungrp
while read p; do sudo useradd $p -M -d /home/sshtunnel -s /bin/true -g sshtungrp; done < users.txt;
sudo -u sshtunnel mkdir /home/sshtunnel/.ssh
sudo -u sshtunnel vim /home/sshtunnel/.ssh/authorized_keys
sudo -u sshtunnel chmod 750 /home/sshtunnel
sudo -u sshtunnel chmod 750 /home/sshtunnel/.ssh
sudo -u sshtunnel chmod 640 /home/sshtunnel/.ssh/authorized_keys
나는 /etc/ssh/sshd_config
다음을 추가했다:
Match Group *,!sshtungrp
StrictModes yes
오류 메시지가 나타납니다 Directive 'StrictModes' is not allowed within a Match block
. 이 문제를 어떻게 극복할 수 있습니까? 또는 최종적으로 어떤 노드가 어떤 노드인지, 그리고 해당 노드에 대한 SSH에 사용되는 로컬 포트를 파악하려는 목표를 달성할 수 있습니까?
답변1
다양한 사용자에게 제공하여 다양한 연결 소스를 차별화하려고 합니다. 모든 키를 사용하면 모든 계정에 로그인할 수 있으므로 서로 다른 사용자 간에 파일을 공유할 authorized_keys
필요가 없습니다 . (그럴 것이다일하다, 그러나 계정 분리는 보안상의 이점을 제공하지 않습니다. )
따라서 authorized_keys
각 사용자는 루트에 속하는 파일을 갖습니다. 각 authorized_keys
파일은 해당 계정에 해당하는 키만 인증합니다. 여러 개의 키를 만드는 것은 비용이 저렴하므로 하지 않을 이유가 없습니다. 닫을 필요는 없습니다 StrictModes
. AuthorizedKeysFile
사용자별 블록에서 이 지시어를 사용 Match
하거나 사용자 이름으로 대체가 포함된 지시어를 사용할 수 있습니다 AuthorizedKeysFile
.%u
터널 사용자 생성:
sudo groupadd sshtungrp
sudo mkdir /etc/ssh/tunnelkeys # or wherever you want to keep them
# Add users without /home
while read p; do sudo useradd $p -r -s /bin/true -g sshtungrp; done < users.txt;
# Copy key file with: sudo vim /etc/ssh/tunnelkeys/%u
sshd_config:
Match Group sshtungrp
AuthorizedKeysFile /etc/ssh/tunnelkeys/%u