web-dev-qa-db-ja.com

1つのコマンドでSSHトンネルを介してrdesktopを実行する

あるターミナルウィンドウでssh server -L 3392:192.168.1.138:3389を実行してから、別のターミナルウィンドウでrdesktop 127.0.0.1:3392を実行して、SSHトンネルを介してWindowsマシンに接続しています。これをGnomeショートカットなどから実行できる1つのコマンドにマージするにはどうすればよいですか?

5
Matt Alexander

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接続を閉じる必要があります。

2
Edward Anderson

上記の改善として、最後に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は自動的に停止します。

2
Kadu

私の「manssh」はこう言っています:

ssh [a bunch of options] [user@]hostname [command]

コマンドを使用することもできますが、構文が私のものと一致しないため、別のものを使用しているようです。とにかく、マンページをチェックして、コマンドを起動するための何かがあるはずです。

0
LtWorf