透過兩個不同的網關,使用不同的伺服器使用者連接 (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手冊頁:

匹配 限制以下聲明(直到下一個主持人或者匹配關鍵字)僅在以下條件時使用匹配關鍵字滿足。

相關內容