scp 通过带有密码的跳转服务器,目的地使用私钥进行身份验证

scp 通过带有密码的跳转服务器,目的地使用私钥进行身份验证

坐在主机A上,使用密码连接到跳转服务器B,然后使用私钥(无密码)连接到服务器C - 我想从那里将​​文件复制到主机A。使用:

scp -oProxyJump=user1@serverB jump:"/home/user2/file.txt" /home/user1/Desktop/

不管用。它要求输入密码才能跳转服务器 B,然后我得到:

..
..
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user1/.ssh/id_rsa
debug1: Trying private key: /home/user1/.ssh/id_dsa
debug1: Trying private key: /home/user1/.ssh/id_ecdsa
debug1: Trying private key: /home/user1/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: No more authentication methods to try.
Permission denied (publickey,keyboard-interactive).

显然问题是 scp 试图使用主机 A 的密钥,而不是跳转服务器 B(它们所在的位置)。有没有办法告诉 scp 使用跳转服务器上的身份验证密钥而不是本地的身份验证密钥?也许有:?

scp -o IdentityFile

最好不要使用 ssh 配置文件,而只使用带选项的命令

答案1

我不认为有:当使用 时ProxyJump,主机 A 上的 SSH/SCP 客户端将通过服务器 B 建立隧道,这意味着服务器 B 上不会执行 SSH/SCP 客户端,因此没有简单的方法可以在主机 B 上使用私钥。

根据您的要求,这可能是一个解决方案:

ssh serverB ssh jump cat /home/user2/file.txt > /home/user1/Desktop/file.txt

相关内容