私たちの大学では、家ではアクセスできないいくつかの学術誌にアクセスできます。私がいない間にドキュメントをダウンロードできるように、現在のプロセスは次のとおりです。
大学コンピュータにSSHトンネルを作成する
ssh -D 12345 [email protected]
このトンネルをプロキシとして使用するように設定した別のプロファイルを使用して、Firefoxの新しいインスタンスを起動します
firefox -P uniprofile -no-remote
。これにより、私の大学にトラフィックを送信していない他のウィンドウを開くことができます。論文をダウンロードしたら、Firefoxを終了してSSH接続を閉じました。
私が理解していないのは、これらすべてをスクリプトに接続してトンネルを確立し(パスワードを求めるメッセージを表示する)、完了したらFirefoxを起動してSSH接続を閉じるデスクトップランチャーを作成できることです。 Firefoxウィンドウを閉じます。最初の試みは、単にsshコマンドを使用してスクリプトを作成し、firefoxコマンドを使用することでしたが、Firefoxはssh接続を閉じた後にのみ開始されました。
#!/bin/bash
set -e
ssh -D 12345 [email protected]
firefox -P uniprofile -no-remote
#...and at this point find a way to close the ssh connection...
答え1
これはテストされていませんが(GUIを使用していないため)、次のことを試してください。
#!/bin/bash
# From this answer http://unix.stackexchange.com/a/29949/82289
[email protected]
ssh -f -N -D 12345 -M -S /tmp/ssh_tunnel_%h.sock -o ExitOnForwardFailure=yes $SSH_HOST && \
echo "ssh tunnel started successfully" || \
echo "ssh tunnel failed to start"
# Launch firefox
firefox -P uniprofile -no-remote
# We should only get here after firefox closes
# Close the ssh tunnel socket
ssh -S /tmp/ssh_tunnel_%h.sock -O exit $SSH_HOST
# End shell-script
この2つのフラグ-f
は-N
あなたが望むものだと思います(人々 ssh から)。
- F
コマンドが実行される前にSSHにバックグラウンドに入るように要求します。これはsshにパスワードやパスフレーズが必要ですが、ユーザーがそれをバックグラウンドで実行したい場合に便利です。これは -n を意味します。リモートサイトでX11プログラムを起動するための推奨方法は、ssh -f host xtermなどのコマンドを使用することです。
-N
リモートコマンドを実行しないでください。これはポートのみを転送するのに役立ちます(プロトコルバージョン2のみ)。
答え2
または、そのコンピュータにFirefoxがインストールされている場合は、Firefoxを開き、次のようにコンピュータに表示できます。
ランニング:
export DISPLAY=:0.0;
ssh -Y [email protected]
その後、SSH接続が確立されたら、そのマシンでFirefoxを実行します。
firefox