我正在尝试将文件从一台远程服务器复制到本地计算机上的另一台远程服务器.这就是我想要做的
localA $ scp userB@remoteB:/path/to/file userC@remoteC:/path
Run Code Online (Sandbox Code Playgroud)
问题是我需要在远程计算机上为userB和userC传递两个密码.
根据Garron的说法上面应该可行,但我得到了许可否认.
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection
Run Code Online (Sandbox Code Playgroud)
有什么建议?
小智 34
如果你可以从本地(本地 - > remote1和本地 - > remote2)ssh到两个远程服务器,那么你可以尝试:
ssh -A -t user1@remote1 scp srcpath user2@remote2:destpath
Run Code Online (Sandbox Code Playgroud)
这将使用您的本地凭据直接从remote1传输到remote2.
如果您不想被要求输入密码,则应在遥控器上设置authorized_keys文件.
小智 31
超级用户已存在此问题:
https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-my-third-pc
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Run Code Online (Sandbox Code Playgroud)
如上所述,-3选项指示scp通过发出命令的PC路由流量.
如果remote1和remote2在同一网络上,则上述情况属实.
如果不是: - 您必须使用端口转发
这可以在 linux 终端中使用以下命令行:
scp -3 user1@ip:path/from/directory/ user2@ip:path/to/directory
将出现一个提示,要求输入这样的密码:
user1@ip 的密码: user2@ip 的密码:
如果您通过在第一个密码后按 Enter 键按顺序提供两个密码,则它应该接受但不会接受。即使您按顺序再次输入两个密码,但在第一个密码后不按 Enter 键,它也不会再次接受。
您必须先输入 user2,然后按 Enter,然后输入 user1 的密码并按 Enter。这将起作用。
我知道这听起来不对,但只有这样才能奏效。这是scp 中的一个错误。