
ENV には 2 つのジャンプホスト サーバーがあり、リモート サーバーにログインして ssh コマンドを実行しようとします。各場所に ssh/confg ファイルがあり、sshproxy の助けを借りて Jump2 サーバーにアクセスします。すべての場所のサーバーに同時にアクセスできるように、構成ファイルをマージしたいと考えています。
下記参照 ENV
ラップトップ-------->
Jumphost1 --------->
Jumphost2--------->
リモートサーバー
実際には、ローカル マシンからスクリプトを実行し、出力をローカルに保存する予定です。したがって、このタスクをアーカイブするには、2 つのジャンプホストに ssh を実行し、リモート サーバーで以下のコマンドを実行する必要があります。これにより、ローカル マシンからスクリプトが実行され、ローカル マシン自体に出力が取得されます。
Jump1は2222ポート経由でアクセス可能で、ユーザーは同じユーザーになります
しかし、リモートサーバーにアクセスするには別のユーザー1が必要です
ssh user1@ip < ./script >> file.txt &&
~/.ssh/config を設定します:
ホスト Jump1 ユーザー jump1user ポート 2222 ホスト Jump2 ProxyCommand ssh -W %h:%p Jump1 ユーザー jump2user ホスト RemoveServer ProxyCommand ssh -W %h:%p Jump2 ユーザー remoteUser
上記のファイルを使用すると、問題なく jump2 サーバーに直接ログインできます。ただし、場所ごとに構成ファイルを毎回変更する必要があります。
各リージョンから情報を収集するためのスクリプトで以下の例の ssh コマンドを実行するには、単一の構成ファイルが必要です。
例
ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&
答え1
この例では、1 つのファイルのみを使用できるようになります。
Host *
User username
IdentityFile /home/username/.ssh/identity
Host some*
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Host other*
ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null
Host something
HostName 1.2.3.4
Host somethingelse
HostName 2.3.4.5
Host otherthing
HostName 3.4.5.6
答え2
Host remotehost
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
説明されているように、ジャンプホストはポート 2222 でのみアクセス可能なので、その事実をプロキシ SSH 接続に伝える必要があります。
質問のさらなる編集により、実際には二プロキシするホストを指定すると、少し複雑になりますが、それほど複雑ではありません。
local.example.com
- 直接作業するホストjump1.example.com
- 直接接続するホストlocal
jump2.example.com
- 直接接続するホストjump1
endpoint.example.com
- 最終的に接続するホスト
でlocal.example.com
、SSH 構成に以下を追加します。
host endpoint.example.com
ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
でjump1.example.com
、SSH 構成に以下を追加します。
host endpoint.example.com
ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
これで、両方のプロキシからアクセスできるようになります。ssh [email protected]
local.example.com