坐在主机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