通过两个不同的网关,使用不同的服务器用户连接 (SSH) 到同一服务器

通过两个不同的网关,使用不同的服务器用户连接 (SSH) 到同一服务器

我想要实现的是能够target.server使用以下命令从本地计算机连接到某些设备,而无需输入任何密码:

ssh [email protected]
ssh [email protected]

上述每个用户只接受来自特定IP地址的连接,分别对应gateway1.examplegateway2.example。我已将所有必需的 SSH 密钥添加到右侧authorized_keys,这样我就可以执行以下操作,而无需输入密码:

现在我认为仍然需要将正确的东西放入我的本地~/.ssh/config.当我添加:

Host target.server
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

然后工作。但我不知道如何使两者同时工作。我试过:ssh [email protected]user1user2

Host target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

或者

Host target.server
    User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

但它仍然不起作用user2:一切都通过了gateway1,但没有gateway2

预先非常感谢您的帮助!

更新:我已经能够使以下命令起作用:

ssh user1
ssh user2

(不带@target.server),使用以下配置:

Host user1
    HostName target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host user2
    HostName target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

这就是我将要使用的,但我仍然很好奇看到这个问题开头的两个命令的解决方案。

答案1

正如您所发现的,别名是一个很好的解决方案。如果您不想使用它们,该Match指令可能是另一个有效的选项。

Host target.server
    Match User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    Match User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

ssh_config手册页:

匹配 限制以下声明(直到下一个主持人或者匹配关键字)仅在以下条件时使用匹配关键字满足。

相关内容