最近、サーバーのリストへのユーザー名/パスワードのアクセス権が与えられました。SSH公開鍵をこれらのサーバーに伝播して、より簡単にログインできるようにしたいと考えています。
明確にするために:
ssh-copy-id
を使用してパスワードを何度も入力したくありません。xargs
、sshpass
およびssh-copy-id
を使用した別の方法:
資格情報がcredentials.txtのuser:password@server
形式であると仮定します。
$ cat credentials.txt
root:[email protected]
foo:[email protected]
bar:[email protected]
あなたがすることができます:
tr ':@' '\n' < credentials.txt \
| xargs -L3 sh -c 'sshpass -p $1 ssh-copy-id $0@$2'
注:使用後は必ずcredentials.txtを削除してください。
Ansible の使用はかなり簡単です。 <USER>
を実際のログイン名に置き換えるだけです
$ cd /path/to/public/key
$ cat<<END > hosts
Host1.example.com
10.10.10.10
END
$ ansible -i hosts all --ask-pass -u <USER> -m authorized_key \
-a "user=<USER> key='$(cat id_rsa.pub)'"
ClusterSSHは各マシンのウィンドウを提供し、すべてのウィンドウを制御する共通のウィンドウを備えています。
私たちが10台のマシンを話しているなら、これはうまくいくでしょう。私たちが100台のマシンを話している場合、多くのウィンドウがあります。
ClusterSSHの優れている点は、あるマシンが他のマシンと100%異なる場合、ウィンドウをクリックして、すべてのマシンへのキーストロークの送信に戻る前に、そのマシンにのみキーストロークを送信できることです。
法案に適合する可能性のあるいくつかのこと:
他の回答で述べたように、sshpass
がおそらく最も簡単な解決策です。