`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秒間アクティビティがなければ閉じません。

sleep接続が完了するとSSH PIDを取得して明示的に終了しますが、トンネルが自動的に閉じられる場合はこのバージョンをお勧めします。

トンネルを開いておきますsshpass。それとも私が何か間違っているのでしょうか?

答え1

あなたは使用しています

-f

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

そして

-N

リモートコマンドを実行しないでください。これはポート転送に役立ちます。

コマンドを実行する前にバックグラウンドに移動します(抑制済み)。だからバックグラウンドに残っています。決して実行されずにsleep死ぬのを待ちます。

関連情報