我想要实现的是能够target.server
使用以下命令从本地计算机连接到某些计算机,而无需键入任何密码:
ssh [email protected]
ssh [email protected]
上面的每个用户仅接受来自特定IP地址的连接,分别对应于gateway1.example
和gateway2.example
。我已经在右侧添加了所有必需的SSH密钥authorized_keys
,以便无需输入密码即可执行以下操作:
ssh [email protected]
从本地计算机,然后ssh [email protected]
从gateway1
。ssh [email protected]
从本地计算机,然后ssh [email protected]
从gateway2
。现在我认为将正确的事情放在我的当地仍然是必要的~/.ssh/config
。当我添加时:
Host target.server
ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
然后ssh [email protected]
工作。但是我不知道该如何兼顾user1
和user2
工作。我试过了:
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'
这是我将要使用的,但是我仍然很好奇在这个问题的开头看到两个命令的解决方案。
如您所知,别名是一个很好的解决方案。如果您不想使用它们,则该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
手册页:
Match限制仅当满足Match关键字后面的条件时才使用以下声明(最多下一个Host或Match关键字)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句