我想使用两个连续的堡垒主机登录 Linux 服务器。我的.ssh/config
文件如下所示:
Host *
User username0
Host hostname0
Hostname foo
Host hostname1
Hostname bar
Port 0
ProxyCommand ssh -W %h:%p hostname0
Host hostname2
User username2
Hostname bat
Port 1
ProxyCommand ssh -W %h:%p hostname1
我的用户名是hostname0
和但我的用户名hostname1
是。username0
hostname2
username2
hostname0 和 hostname1 的条目按预期工作。但 的条目hostname2
似乎忽略了该User
选项。
ssh hostname2
导致显示:
username0@hostname2's password:
如果我将主机名2的ProxyCommand更改为,ssh -l username2 -W %h:%p hostname1
那么它会要求我输入用户名2@主机名1的密码。
username2@hostname1's password
这是有道理的,因为我要求它登录hostname1
为username2
,但它显然不起作用,因为我的用户名实际上是username0
。
如何配置 ssh 在每种情况下使用正确的用户名?
答案1
使用不同的块顺序Host
。匹配Host *
所有内容并且ssh_config
不会覆盖已存储的条目:
Host hostname0
Hostname foo
Host hostname1
Hostname bar
Port 0
ProxyCommand ssh -W %h:%p hostname0
Host hostname2
User username2
Hostname bat
Port 1
ProxyCommand ssh -W %h:%p hostname1
Host *
User username0
将其移至Host *
最后将使其再次为您工作。