我想要實現的是能夠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'
這就是我將要使用的,但我仍然很好奇看到這個問題開頭的兩個命令的解決方案。
答案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
手冊頁:
匹配 限制以下聲明(直到下一個主持人或者匹配關鍵字)僅在以下條件時使用匹配關鍵字滿足。