複数のホップにわたってSSHコマンドを接続するには?

複数のホップにわたってSSHコマンドを接続するには?

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だけでした)

関連情報