SSH公開鍵のコピー

SSH公開鍵のコピー

スタックオーバーフローで回答が得られなかったため、この質問が繰り返し発生します。

公開鍵を別のサーバーにインポートする簡単なスクリプトを作成しようとしています。

選択できるオプションを2つ作成しました。 1つはssh-copy-idを使用すること、もう1つは単に公開鍵を別のサーバー上のファイルにコピーすることです。 2番目はうまく機能しますが、ssh-copy-idでは機能しません。これが私が今持っているものです:

ssh-copy-id -i $var1 $i

$var1 は "/path/to/the/public_key.pub" で、 $i は txt ファイルを作成するサーバーです。全体的なアイデアは、私の公開鍵がどこにでもあり、新しい管理者の公開鍵をどこにでも入力するのが好きだということです。うまくいきますが、実行するときにパスワードを入力する必要があります。すべてのソリューションは、パスワードを一度だけ入力することでこれを行うことができます。また、キーを追加する前に新しい行を入力したいと思います。ただし、ssh-copy-idを使用してこれを行う方法の解決策はありません。

ベストアンサー1

解決策はこれです。

1)端末からid_rsa.pubをコピーしたいすべてのホスト/ IPアドレスを含む配列を作成します。例えば

hosts=( host1 host2 192.168.100.200 host4 )

2) 予想ファイルを作成して保存し、実行可能にします。chmod +x filename

#!/usr/bin/expect -f

if { $argc != 4 } {
    puts stderr "usage: ./expt host pass user keyfile"
    exit 2
}

   set host [lindex $argv 0]
   set pass [lindex $argv 1]
   set user [lindex $argv 2]
   set keyfile [lindex $argv 3]

   spawn ssh-copy-id -i $keyfile $user@$host
   expect "assword:"
   send "$pass\n"
   expect eof

3) ホストを保持しているアレイを繰り返し送信します。id_rsa.pub

for host in "${hosts[@]}" ; do ./expt "$host" Y0urPassword username ~/.ssh/id_rsa.pub ; done

公開鍵がすべてのホストにコピーされるのを待ちます。

おすすめ記事