Linux SSH:使用公钥身份验证时复制不带密码的文件。

Linux SSH:使用公钥身份验证时复制不带密码的文件。,linux,bash,ssh,Linux,Bash,Ssh,我们有2台Debian服务器,一台用于测试,一台用于live。我有一些脚本,应该执行这些脚本将数据从实时传输到测试。对于这两个服务器,我们都使用PublicKeyAuthentication,其中id_rsa.pub的内容被添加到测试服务器上的授权_密钥中 即使这样做了,每次我启动从一台服务器到另一台服务器的传输时,都会被要求输入密码 我还尝试调用ssh copy id,但没有任何帮助,我得到的只是授权密钥中的一个重复条目 最后,当我尝试sshpass时,我收到以下消息,我无法输入密码,因为它只

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

即使这样做了,每次我启动从一台服务器到另一台服务器的传输时,都会被要求输入密码

我还尝试调用ssh copy id,但没有任何帮助,我得到的只是授权密钥中的一个重复条目

最后,当我尝试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': 

有什么想法吗?谢谢

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

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

从sshpass的输出可以看出,它要求的是密钥的密码,而不是服务器的密码:

输入密钥“/root/.ssh/id\u rsa”的密码短语

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

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

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


从sshpass的输出可以看出,它要求的是密钥的密码,而不是服务器的密码:

输入密钥“/root/.ssh/id\u rsa”的密码短语

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

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

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


是。。我使用SCP。密码身份验证已禁用,因此只有公钥有效。一旦我输入了密码,它就可以正常工作了。。我使用SCP。密码身份验证已禁用,因此只有公钥有效。一旦我输入密码,它就可以正常工作。您如何连接到SSH服务器?您是否为SCP使用私钥?您能把命令放在这里吗?您是如何连接到SSH服务器的?您是否为SCP使用私钥?你能把命令放在这里吗?我来试试。谢谢。我会试试这个。谢谢