target.server
私が実現したいのは、次のコマンドを使用して、パスワードを入力しなくてもローカル マシンからいくつかのサーバーに接続できるようにすることです。
ssh [email protected]
ssh [email protected]
gateway1.example
上記の各ユーザーは、それぞれおよびに対応する特定の IP アドレスからの接続のみを受け入れます。パスワードを入力せずに実行できるように、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'
これは私が使用するものですが、この質問の冒頭にある 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
:
マッチ 次の宣言を制限します(次のホストまたはマッチキーワード)は、マッチキーワードが満たされます。