異なるサーバーユーザーで、2つの異なるゲートウェイを介して同じサーバーに接続(SSH)する

異なるサーバーユーザーで、2つの異なるゲートウェイを介して同じサーバーに接続(SSH)する

target.server私が実現したいのは、次のコマンドを使用して、パスワードを入力しなくてもローカル マシンからいくつかのサーバーに接続できるようにすることです。

ssh [email protected]
ssh [email protected]

gateway1.example上記の各ユーザーは、それぞれおよびに対応する特定の IP アドレスからの接続のみを受け入れます。パスワードを入力せずに実行できるように、gateway2.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'

これは私が使用するものですが、この質問の冒頭にある 2 つのコマンドの解決策を知りたいです。

答え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'

man ページからssh_config:

マッチ 次の宣言を制限します(次のホストまたはマッチキーワード)は、マッチキーワードが満たされます。

関連情報