マルチホップSSHトンネルを正しく閉じます。

マルチホップSSHトンネルを正しく閉じます。

パブリックにアクセスできないサーバーからhost2のみアクセスできるサーバーにVNCトラフィックをトンネリングしたいです。host1host1

次の説明に従って、マルチホップSSHトンネルを確立しました。この問題、使用:

ssh -L 5901:localhost:6000 host1 ssh -L 6000:localhost:5901 -N host2

これは仕事を完全に行います。しかし、入れ子になったトンネルを正しく閉じる方法がわかりません。頑張ったCtrl+Csshしかし殺人事件は今回が初めてのようですhost1。ただし、ssh間の2番目のトンネルは開いたままです。host1host2

また、オプションを使用すると実際のオンを-N取得できないため、単に起動できません。それ以外の場合はまだ受信されませんが、代わりに次のエラーが発生します。ttyhost2exit-Ntty

Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
term: Undefined variable.

私は、ホスト1とホスト2の両方がRHEL 6を実行しているMacOS Xで接続しています。

答え1

ttyの使用方法は正しいです。この-tオプションが提供されます。ただし、実際の目標が対話するttyセッションを取得していない場合は、チェーンの最後のsshコマンドにこのオプションを残してください。あなたの場合は、初めて接続するときにのみこれを使用する必要があります。

ssh -L 5901:localhost:6000 host1 -t ssh -L 6000:localhost:5901 -N host2

今あなたが使うときCtrl-C、すべてのホスト間にトンネルが確立されます。

関連情報