プログラムで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
死ぬのを待ちます。