`ssh [...] sleep 3` (sshpass あり) は決して閉じない

`ssh [...] sleep 3` (sshpass あり) は決して閉じない

次のようにプログラムで SSH トンネルを開きます。

sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3

期待どおりに動作しますが、3 秒間操作がないと閉じません。

私は SSH PID を取得し、接続が終了したら明示的に強制終了しますが、sleepトンネルを自動的に閉じることができるバージョンの方が好みです。

sshpassトンネルを開いたまま使用するか、それとも何か間違っているのでしょうか?

答え1

使用しています

-f

コマンド実行の直前に ssh をバックグラウンドにするように要求します。これは、ssh がパスワードまたはパスフレーズを要求するが、ユーザーがそれをバックグラウンドで実行したい場合に便利です。これは -n を意味します。リモート サイトで X11 プログラムを起動する推奨方法は、ssh -f host xterm などを使用することです。

そして

-N

リモート コマンドを実行しません。これはポート転送のみに便利です。

これは、コマンド (抑制されている) を実行する前にバックグラウンドに入ります。したがって、バックグラウンドに留まります。 はsleep決して実行されず、強制終了されるのを待機します。

関連情報