SSH:使用公钥认证时,无需密码即可复制文件。

时间:2017-09-12 12:10:45

标签: linux bash ssh

我们有2台Debian服务器,一台用于测试,一台用于实时。我有一些脚本应该执行以将数据从实时传输到测试。对于这两个服务器,我们使用PublicKeyAuthentication,其中我们的id_rsa.pub的内容被添加到测试服务器上的authorized_keys。

即使这样做,每次我发起从一台服务器到另一台服务器的转移时,我都会被要求输入密码。

我也尝试过调用ssh-copy-id,但这并没有帮助,我得到的只是authorized_keys中的重复条目。

最后,当我尝试使用sshpass时,我收到以下消息,并且我无法输入密码,因为它只是一条消息。

sshpass -v -p 'PASS' ssh root@our_server
SSHPASS searching for password prompt using match "assword"
SSHPASS read: Enter passphrase for key '/root/.ssh/id_rsa': 

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:2)

从sshpass的输出中,它会询问密钥的密码,而不是服务器的密码:

  

输入密钥' /root/.ssh/id_rsa'

的密码

使用密码保护SSH密钥是一种很好的做法,但正如您所发现的那样,您不能完全自动化这种方式。根据您的具体情况,您可以执行以下任一操作:

  • 使用SSH代理。这是一个守护程序,它会一次询问您的密码,并保持私钥被缓存,直到您将其删除。这仍然有一个好处,即您的SSH密钥在磁盘上存储受密码保护,但您可以将其用作无密码密钥。 这有一个额外的好处,你可以通过SSH转发SSH代理:如果你从你的机器SSH到服务器A,然后再到服务器B,这最后一个连接可以使用你机器上存储的密钥(而不是必须复制你的服务器密钥A)。

  • 完全从密钥中删除密码(您可以使用ssh-keygen将密码更改为空白)

答案 1 :(得分:0)

您如何执行数据传输?是scp吗?检查系统用户名,确保将公钥安装到authorized_keys文件中以供正确的用户使用。

相关问题