ラズベリーパイネットワークを構築しています。ADS-B受話器。複数のノードは、家、小屋、親など、さまざまな場所に配置されます。すべて以下のように設定されています。家に電話するにAmazon-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