使用堡垒主机和不同用户名的 SSH

mor*_*s3A 5 ssh ssh-tunneling tunneling ssh-config

我想使用两个连续的堡垒主机登录到 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
Run Code Online (Sandbox Code Playgroud)

我的用户名hostname0hostname1username0,但我的用户名hostname2username2

hostname0 和 hostname1 的条目按预期工作。但条目hostname2似乎忽略了该User选项。

ssh hostname2 导致显示:

username0@hostname2's password:
Run Code Online (Sandbox Code Playgroud)

如果我将 hostname2 的 ProxyCommand 更改为,ssh -l username2 -W %h:%p hostname1那么它会要求我输入 username2@hostname1 的密码。 username2@hostname1's password 这是有道理的,因为我要求它以hostname1as登录username2,但它显然不起作用,因为我的用户名实际上是username0.

如何配置 ssh 以在每种情况下使用正确的用户名?

Jak*_*uje 3

使用不同的块顺序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
Run Code Online (Sandbox Code Playgroud)

将其移至Host *最后将使其再次为您工作。