如何让 ssh 使用 jump-host 上的配置?

如何让 ssh 使用 jump-host 上的配置?

假设我有两台服务器:jumptargetjump我有:

jump:~/.ssh/config

Host target
  User targetuser
  HostName actual-target-hostname.fqdn
  IdentityFile ~/.ssh/target_rsa

... 在我的客户端机器上我想这样做ssh -J jump target。但是,这行不通,因为一旦jump建立了连接,ssh 就会尝试直接连接target,而不是使用上面文件中的属性config。我如何让它加载/使用该配置文件?我不想将该(大型)配置文件分发到(许多)客户端机器,我宁愿在跳转主机上仅定义一次该配置。

答案1

在我完成对互联网其余部分的挖掘之前,我已经对这个问题投了赞成票,因为我在尝试让代理/堡垒对目标使用不同的用户名时遇到了类似的问题。事实证明,每个 ssh 连接/命令/配置选项都会仅有的使用原始客户端的配置/命令/配置选项。

就我而言,我想去

username@local -> root@proxy -> admin@target

只需ssh target

使用此配置local

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_ed25519
    User username
    ForwardAgent yes
Host proxy [proxy's IPv4]
    Hostname [proxy's FQDN]
    User root
Host target [target's IPv4]
    Hostname [target's FQDN]
    User admin
    ProxyJump proxy

不幸的是,它总是会使用错误的用户名,我花了一段时间才弄清楚,因为它username存在于所有三个主机上。

对我来说,解决方法是移至Host *配置末尾。显然,我误以为后面的指令会覆盖*,但事实并非如此

相关内容