パスワードのないSSHが100source1
を超えるサーバーに設定されていると言うマシンがありますremote1
。remote2
remote100
他のサーバーに同様のパスワードなしのSSH設定を設定する必要があり、公開鍵を100個のサーバー全体のAuthorized_keysファイルsource2
にコピーしたくありません。source2
source1
同様の設定をするためにサーバーの秘密鍵を使用できますかsource2
?この目標を達成する方法は?方法の一つと聞いたのですがssh-agent
、その段階についてはよくわかりません。
答え1
すべてのリモコンに独自のルート(別の/root
ディレクトリなど)と独自のauthorized_keys
ファイルがある場合は、そのファイルをすべて編集して新しいキーを追加する必要があります。
for remote in $(seq 100); do
cat public_key.pub | ssh "remote$remote" tee -a .ssh/authorized_keys
done
ただし、source1の秘密鍵をsource2に送信することもできます。これにより、両方のコンピュータが同じキーペアを使用します(すべてのリモコンが登録されます)。私はこれがどんな種類の衝突も引き起こさないと思いますが、2つのキーを持つことは私にとってより自然なようです。実際、すべてのコンピュータが同じネットワーク上にあり、同じユーザーが管理する可能性が高いため、1つの破損したキーがシステム全体を損傷する可能性があります。したがって、2つを持つとしてもセキュリティが強化されるわけではありません(どこかに1つでもルートになるには十分なためです)。
答え2
取るアプローチは、特定のシナリオによって異なります。すべてのサーバーのユーザーがリモートホストに新しいキーを追加するときに認証に使用できるキーを既に持っている場合に最適ですauthorized_keys
。それ以外の場合は、各ホストにパスワードを入力する必要があります。
SSHキーをリモートシステムに自動的にコピーする最も簡単な方法はを使用することです。これにより、呼び出されるサーバーがssh-copy-id
ある場合は、次のように実行できます。remote1
remote100
for server in $(seq -f 'remote%.0f' 1 100); do
ssh-copy-id -i ~/.ssh/id_rsa "$server"
done
その後、自動的にid_rsa
公開鍵をすべてのサーバーに順番にSSHに接続し、公開鍵をauthorized_keys
。これがサーバー上の唯一のキーである場合、プログラムはssh-copy-id
実際にサーバーにSSHを介して接続する必要があるため、これを追加するためのパスワードの入力を求められます。
さらに自動化する1つの方法は、パスワードを使用した自動ログインなどの機能を使用することですexpect
。 OpenSSHのsshクライアントには、パスワードを指定するコマンドラインオプションがありませんsshpass
。