SSHホストで指定された各接続で複数のSSH接続を接続できますか?
-W
そのフラグを使用したり、別のホスト名またはIPアドレスで2番目のホップを実行することが可能であることがわかりますnc
(たとえば、複数のホストを介したSSH)。いくつかの理由で必要に応じて動作できません。まず、2番目のホップには中間ホストに保存されているキーファイルを使用したいが、またはを使用して指定する-W
方法が見つかりませんnc
。第2に、最終宛先は可変IPアドレスを有する。この問題を解決するには、中間ホストに保存されているファイルにIPアドレスを書き込むスクリプトをターゲットで実行し、IPlook_up_ip.sh
アドレスを印刷する中間ホスト()でスクリプトを実行します。中間ホストには次のエントリがあります~/.ssh/config
。
Host destination
HostName destination
User dest_user
IdentityFile ~/.ssh/destination
PreferredAuthentications publickey
ProxyCommand nc $(look_up_ip.sh %h) %p
これにより、中間から宛先に接続できますssh destination
。
私がやりたいことは、~/.ssh/config
ターゲットホスト(たとえばhopped_destination
)を定義する最初のマシンに何かを入れて、sshが最初に中間ホストに接続してからそこで作業を実行するssh destination
ことです。ssh hopped_destination
中間~/.ssh/config
処理IDファイルと宛先IP照会があります。私がこれを望む理由の1つは、最終的にVNCを使用してターゲットに接続できることを望み、vncviewer -via destination localhost:0
この質問に対する中間ホストの他のユーザーがその接続にアクセスできないようにすることです(許可された回答の一部からわかります)。あり)。 :https://superuser.com/questions/96489/an-ssh-tunnel-via-multiple-hops)。最初のコンピュータに次ssh
のものをインストールできるようにしたいですProxyCommand
。
Host destination
ProxyCommand ssh -t intermediate_user@intermediate_host ssh destination
しかし、私はそのようなことが機能することを可能にするオプションを見つけることができませんでした。
また、これをうまく行う方法に関する提案も歓迎します(nc
ProxyCommand
今使っているものを削除する方法はありますか?)。 VNCコマンドをより直接的に実行するスクリプトを作成することもできますが、これはおそらくより複雑になります(ポート転送を直接処理し、シャットダウン時に閉じていることを確認し、ポートがすべてのユーザーに開かれていないことを確認してください)。
答え1
私のSSH設定ファイルの例。
Host vmike2-squid-cache
User mike
ProxyCommand ssh -q -A -x ???.???.???.??? -W %h:22
(私が変えた唯一のものはIPだけでした)