私はsshのProxyCommand機能の使用に慣れており、それを使用して複数の要塞ホストをホップして最終的なホストに効率的に到達できます。しかし、私はそれが実際にバックエンドでどのように機能するのか理解できないようです。
たとえば次の設定ファイルがあります。
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh [email protected] -W %h:%p"
Host final
に接続する場合、final.com
に接続する前にProxyCommandが実行されることを理解しています。しかし、それでも接続の順序を理解できていないようです。
そして、オプション-W %h:%p
は何をしますか?これはnetcat機能であり、nc %h %p
に類似していることを理解しています。
私の理解がここまで行く限り、操作のシーケンスです。私が間違っているかどうか親切に知らせてください。私の例では、上記で指定した構成ファイルを使用します。
ssh final
を入力しますssh final
コマンドは上記の接続をプロキシとして受け取り、この既存の接続を介してデータをトンネルします。さらに、この手法がssh stackingとしても知られているかどうかも知りたいです。
追加された改行
3)netcatトンネルがbastion.comからfinal.comのポート22に作成されます。
false、netcatはありません。
1)ユーザーがssh final
on localhost。これにより、親sshプロセスが起動します
2)親sshは、I/Oをパイプにリダイレクトして子sshを作成します
3)子sshがbastion.comへの接続を作成します。
4)bastion.comのsshd
プロセスは、final.com:22へのTCP接続を作成します
5)localhostとbastion.com間の既存のssh接続にsshチャネルが追加されます
6)親sshがハンドシェイクデータをパイプに書き込み、子sshがパイプからデータを読み取り、sshチャネル経由でbastion.comのsshdに送信します。 sshdはそれを読み取り、final.comに接続されているソケットに書き込みます。同様に、データはfinal.comからlocalhostに送信されます