我无法理解 ssh 跳转主机的特殊行为。
我的 ~/.ssh/config 中有以下配置:
Host bastion-server
Hostname server.bastion.com
ForwardAgent yes
User user
Host internal-server
Hostname 10.0.0.123
User user2
Host *%via-bastion
ProxyCommand ssh bastion-server -W $(echo %h | cut -d%% -f1):%p
当我尝试使用该命令连接时,ssh internal-server%via-bastion
它会引发此错误:
通道 0:打开失败:管理禁止:打开失败
ssh_exchange_identification:远程主机关闭连接
然而,当我定义
Host bastion-server
Hostname server.bastion.com
ForwardAgent yes
User user
Host internal-server
Hostname 10.0.0.123
User user2
ProxyCommand ssh bastion-server -W %h:%p
并且使用ssh internal-server
它效果很好。
知道为什么会发生这种情况吗?
答案1
在第一种情况下,您的代理命令扩展为:
ssh bastion-server -W internal-server:22
在第二,
ssh bastion-server -W 10.0.0.123:22
前者不起作用,因为你的堡垒服务器无法识别该名称internal-server
。
(翻译不会发生在客户端,因为客户端根本不明白它应该Host internal-server
在运行时查看什么ssh internal-server%via-bastion
——就它而言,那些是完全不同的名称。)