在我的笔记本电脑上,我尝试将文件目录从一个 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 上不可用。)
好的,当我没有设置基于证书的身份验证时,我可以重复您的问题。看来要在两个远程系统之间传输必须具有基于证书的身份验证(即不需要密码)。