私のユースケースは、許可されたアクセスのために自分のsshキーをリモートマシンにコピーする必要があることです。入力を必要とせずに、sshキーをリモートマシンにコピーするスクリプトを呼び出せるようにする必要があります。現在、パスワードの入力とRSAフィンガープリントのはいの入力を求められます。 IP範囲を介してホストを相互に自動的に追加できるようにする必要があります
Sshpassが使えると思います。
apt-get install sshpass
yum install sshpass
例えば:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
パスワードを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=''
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 モジュールを使用します。ユーザーがスクリプトのべき等性を維持する方が簡単です。