まず、RSAキーを生成するためにスクリプトを使用していたので、rsaキーを試しましたが、最初は新しく生成された認証キーを渡すためにリモートシステムに接続する必要がありました。私がやっていることは事前に作成されたキーを持つことですが、これらすべてのマシンのキーを取得するより簡単な方法が欲しいです。
問題は次のとおりです。 100台を超えるコンピュータに接続し、公開鍵ファイルを転送し、権限を設定し、鍵認証を有効にする必要があります。これで、2 行、つまり転送の scp コマンドと権限を設定し、キー認証を再びオンにする ssh コマンドでこれを行うことができます。ただし、実際には各コンピュータに2回のパスワードが必要です。これらのキーを必要とするシステムが100を超えるため、パスワードを再入力する必要はなく、このパスワードを200回入力したくありません。
接続中にパスワードを一度だけ(技術的には2回)挿入する方法が必要です。スクリプトの実行中に変数にパスワードを保存し、接続が確立され、公開鍵がすべてのコンピュータに送信されたら、パスワードを完了できるようにしたいです。
アイデア?
編集:言及するのを忘れました。何もインストールできません。だから私は期待を使うことができません。
答え1
実行中のタスクを実行するために2つの接続を作成する必要はありません。それがあなたにはうまくいかないと仮定するとssh-copy-id
、ここで私が長い間(ssh-copy-idについて知る前に)書いたスクリプトでsshで行ったいくつかのことがあります。
tar c $keys | ssh "$1" "set -e; cd \`mktemp -d\`; tar x; mkdir -p ~/.ssh; chmod go-w ~/.ssh; cat $keys >> ~/.ssh/authorized_keys; chmod go-w ~/.ssh/authorized_keys"
はい、途方もない行です。$keys
すべての公開鍵の名前を保存します(既存のスクリプトであることを忘れないでください)。
keys=''
for k in identity.pub id_rsa.pub id_dsa.pub; do
[ -e ~/.ssh/$k ] && keys="$keys $k"
done
要点は、sshがバイナリセキュア転送であるため、これを使用してchmodなどを実行する同じセッションでファイルを転送できることです。