あるターミナルウィンドウでssh server -L 3392:192.168.1.138:3389
を実行してから、別のターミナルウィンドウでrdesktop 127.0.0.1:3392
を実行して、SSHトンネルを介してWindowsマシンに接続しています。これをGnomeショートカットなどから実行できる1つのコマンドにマージするにはどうすればよいですか?
Sshがパスワードの入力を求めないように、パスワードなしのSSHキーが設定されていると仮定します。
次のようなbashスクリプトを使用できます。
#!/bin/bash
ssh server -L 3392:192.168.1.138:3389 -N &
SSH_PID=$!
sleep 5 # wait for the connection to establish
rdesktop 127.0.0.1:3392
kill $SSH_PID
ここでは、プログラムが終了するまでrdesktopがフォークして戻ってこないことを前提としています。含まれている場合、SSH接続はすぐに停止します。それが本当なら、rdesktopプロセスの実行を監視し、それらがすべて死ぬまでループ/スリープしてから、SSH接続を閉じる必要があります。
上記の改善として、最後にSSHPIDを強制終了する必要はありません。
ssh server -fL 3392:192.168.1.138:3389 sleep 5
rdesktop 127.0.0.1:3392
上記は、削除サーバーでsleep 5
を実行し、バックグラウンド(-f)に移動するようにsshに指示します。これにより、接続が5秒間開いたままになります。これは、rdesktopコマンドを実行するのに十分な時間です。トラフィックが通過している間、ポートフォワーディングはそのまま残ります。そのため、rdesktopを終了するとすぐに、sshは自動的に停止します。
私の「manssh」はこう言っています:
ssh [a bunch of options] [user@]hostname [command]
コマンドを使用することもできますが、構文が私のものと一致しないため、別のものを使用しているようです。とにかく、マンページをチェックして、コマンドを起動するための何かがあるはずです。