我不确定 Ansible,但我对 ssh 密钥的工作原理有所了解
当您使用 ssh-keygen 命令(默认转到 ~/.ssh/id_rsa 文件)生成新的 SSH 密钥时,它会要求您输入密码(密码)
每当您使用该密钥时,它都会要求您输入该密码。
如果你用
创建一个新密钥
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/YOUR_USERNAME/.ssh/id_rsa_nopass
Enter passphrase (empty for no passphrase): [just press enter, don't type anything]
Enter same passphrase again: [just press enter again]
这将在您选择的目录 (/home/user/.ssh) 中创建一个 id_rsa_nopass 私钥文件和一个 id_rsa_nopass.pub 公钥文件
假设 ansible 设置为正确使用您的 ssh 密钥,您应该可以使用以下命令
$ ssh-add ~/.ssh/id_rsa_nopass
注意:使用不带密码的 ssh 密钥可能很危险,因为任何人都可以在不知道密码的情况下访问您的设备并进行连接。如果您不介意这一点,那么无密码 ssh 密钥是避免每个人都输入密码的好方法
编辑:刚刚研究了一下 Ansible,它的基本设置只是在 ssh 服务器上运行命令,对吧?
在这种情况下,您可能需要将您的公钥添加到您要连接的任何服务器,这通常可以通过命令来完成
ssh-copy-id -i /path/to/your/public/key/file yourname@yourserver.com -p your_server's_ssh_port
例如,要将之前的 id_rsa_nopass 密钥授权给服务器 example.org 上的帐户 foobar,您可以使用 ssh 端口 10022
ssh-copy-id -i ~/.ssh/id_rsa_nopass.pub foobar@example.org -p 10022
这将提示您输入 foobar@example.org 的密码,在填写密码后,它将授权该公钥连接到该服务器,并且由于 id_rsa_nopass 没有密码,您现在应该能够在没有任何密码的情况下进行连接密码提示