web-dev-qa-db-ja.com

プロンプトなしでスクリプトのssh-copy-idを介してsshキーをリモートマシンにコピーしますか?

私のユースケースは、許可されたアクセスのために自分のsshキーをリモートマシンにコピーする必要があることです。入力を必要とせずに、sshキーをリモートマシンにコピーするスクリプトを呼び出せるようにする必要があります。現在、パスワードの入力とRSAフィンガープリントのはいの入力を求められます。 IP範囲を介してホストを相互に自動的に追加できるようにする必要があります

5
Aamir Mushtaq

Sshpassが使えると思います。

  • Ubuntu/Debian:apt-get install sshpass
  • Fedora/CentOS:yum install sshpass

例えば:

sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP

11
Rob Calistri

パスワードを1回入力しても問題がない場合は、次のスクリプトを使用すると、コマンドラインにパスワードを入力しなくても、sshキーが多数のホスト(hosts.txtにリストされている)に非常に高速にコピーされます。

# Sudo yum install moreutils sshpass openssh-clients
echo 'Input Password:';
read -s SSHPASS;
export SSHPASS;
parallel -i -j 25 sshpass -e ssh-copy-id '-o ConnectTimeout=10 -o StrictHostKeyChecking=no {}' -- `cat hosts.txt`;
export SSHPASS=''
0
Adam C.

Sshパスワードプロンプトの場合は、ansible/ansible-playbook -k/--ask-passを使用してみてください。 sshpassを呼び出します(参考までに、OSXにはsshpassが付属していない可能性があります)。

ホストキーのチェックには、次を追加します

[defaults]
Host_key_checking = False

〜/ .ansible.cfgまたは/etc/ansible/ansible.cfgにあります。

またはexport ANSIBLE_Host_KEY_CHECKING=Falseこのように manual と言います。

Sshキーのデプロイには、ansibleプレイブックの authorized_keys モジュールを使用します。ユーザーがスクリプトのべき等性を維持する方が簡単です。

0
jasonz