次のようにプログラムで 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
決して実行されず、強制終了されるのを待機します。