使用“scp”将目录从远程主机复制到另一个远程主机时出错

使用“scp”将目录从远程主机复制到另一个远程主机时出错

在我的笔记本电脑上,我尝试将文件目录从一个 Raspberry Pi ( [email protected]) 复制到另一个 ( [email protected]):

~/example$ scp -r [email protected]:~/example/files_to_send [email protected]:~/example

但在输入[email protected](要从中复制目录的主机)密码后,我不断收到此错误消息:

[email protected]'s password:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
lost connection

我尝试删除~/.ssh/known_hosts每个设备的 ECDSA 指纹,并通过使用 重新连接每个主机来生成新的指纹ssh。我还确保主目录(及其所有内容)具有正确的权限、所有者和组。

另外,如果使用 访问我尝试从 ( [email protected])复制的 Raspberry Pi ssh,并执行以下操作:

~/example$ scp - r files_to_send [email protected]:~/example

效果很好。

我想知道为什么使用scp从远程主机复制到另一个远程主机不起作用。

有任何想法吗?

编辑

我发现了;-v的选项scp这是页面中的条目scp man

详细模式。使 scp 和 ssh(1) 打印有关其进度的调试消息。这有助于调试连接、身份验证和配置问题。

因此,我将其添加到命令中,这表明身份验证[email protected]成功。但是,当[email protected]稍后尝试对 进行身份验证时[email protected],会打印以下消息并且连接失败:

debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.
lost connection

答案1

scp当您在两个远程系统之间的本地客户端上运行时,如下所示:

scp remote1:file remote2:

正如预期的那样,您正在从本地进行身份验证remote1,但随后是直接remote1进行身份验证remote2。文件传输并非如您所期望的那样通过本地客户端发送。

要告诉scp客户端对两个远程主机进行身份验证并管理文件传输本身,您需要一个附加标志:

scp -3 remote1:file remote2:

在你的情况下,我希望第一个 Pi 没有基于证书的登录无需手动参与即可工作设置为第二个,所以认证失败。 (请记住,您的密钥似乎需要密码才能解锁,而当第一个 Pi 尝试与第二个 Pi 通信时,该密码在第一个 Pi 上不可用。)


好的,当我没有设置基于证书的身份验证时,我可以重复您的问题。看来要在两个远程系统之间传输必须具有基于证书的身份验证(即不需要密码)。

相关内容