YASSさらにもう1つのシンプルなソリューション
ssh -f -L 2222:HostC_IP_or_Name:22 userOnB@hostB sleep 10 &&
ssh -o HostKeyAlias=HostC -p 2222 userOnC@localhost
- 最初のコマンドはへのssh接続開くホストBをと言うホストBをからの接続転送するためにはlocalhost:2222に22:HostCに。
-fパラメーターは、接続が確立されるとバックグラウンドに移行するようSSHに指示します
- 2番目のコマンドは、単にlocalhost:2222へのクライアント接続を開きます
- オプションHostKeyAliasは必須ではありませんが、間違ったホストへの接続を防ぐのに役立ちます
- 注:
sleep 102番目のsshコマンドが転送ポートを使用するまで接続を維持するには、コマンドが必要です。次に、2番目のsshが転送ポートを離れると、最初のsshが閉じます。
これで、後続のsshセッションを実行できます。
ssh -o HostKeyAlias=HostC -p 2222 userOnC@localhost
バリアント:
ssh -f -L 2222:HostC_IP_or_Name:22 userOnB@hostB sleep 10 &&
ssh -M -S ~/.ssh/ssh_HostC22userOnC.sock -o HostKeyAlias=HostC -p 2222 userOnC@localhost
次を実行することにより、後続のsshセッションを開くことができます。
ssh -S ~/.ssh/ssh_HostC22userOnC.sock userOnC@localhost
-Mおよび-S paramを使用する主な利点は、HostAからHostCへの接続が1つだけ開かれ、後続のセッションが再度認証されず、はるかに速く実行されることです。