我有三台机器 A、B、C。目的是能够将文件从 A 传输到 C。我可以通过 ssh 访问从 A 到 B,以及从 B 到 C;B 和 C 在本地网络上。这可以通过选项实现,scp -o ProxyCommand
并且有效。但在我偶然发现这个解决方案之前,我尝试了一种ssh -L
不起作用的方法。问题找到了,但解决方案却没有找到。首先,通过 B 从 A 到 C(在 A 上)设置了一个 ssh 本地重定向,如下所示:
ssh -p 8888 -L 5022:userC@hostC:22 userB@hostB
使用 ssh 在 A 上验证/测试:
ssh -p 5022 userC@localhost
这不符合 A 的说法:
ssh_exchange_identification: Connection closed by remote host
/var/log/auth.log
在 B 上说:
sshd[9873]: error: connect_to userC@hostC: unknown host (Temporary failure in name resolution)
我已经验证是 hostC 后的冒号 (:) 导致了错误,但还没有找到解决这个问题的方法。任何想法都会有用。
谢谢
答案1
-L
用于端口转发。
格式为-L port:host:hostport
无论您尝试通过向主机名规范中添加用户名做什么-L 5022:userC@hostC:22
都是不正确的。
——————————————————————-
最简单的从主机 A 经由主机 B 到主机 C 进行多跳 ssh 的方法是使用-J
较新 ssh 版本中提供的ProxyJump 命令开关
ssh -J userB@hostB userC@hostC
或者使用 scp
scp -o 'ProxyJump userB@hostB' file userC@hostC:/path/