だから私は2つのバックグラウンドSSHプロセスを呼び出したいと思います。
ssh -D localhost:8087 -fN aws-gateway-vpc1
ssh -D localhost:8088 -fN aws-gateway-vpc2
これらのゲートウェイではauthenticate_keysファイルを設定できないため、対話型パスワードの入力を求める必要があります。これが私が-f
シェルの代わりにそのフラグを使用する理由&
です。対話式に認証した後、プロセスはバックグラウンドに配置されます。
$!
この場合、最新の[self]バックグラウンドプロセスのpidを取得するためにbash変数を使用できないようです。
後で中断した場合、正しいPIDを見つけるには他にどのようなオプションが必要ですか?
ベストアンサー1
grepでpidを見つけるとエラーが発生する可能性があります。別のオプションはSSHControlPath
オプションを使用することですControlMaster
。これにより、ssh コマンドが制御ソケットでリッスンし、後続の ssh 呼び出しのコマンドを待機できるようになります。
この試み
ssh -D localhost:8087 -S /tmp/.ssh-aws-gateway-vpc1 -M -fN aws-gateway-vpc1
# (...)
# later, when you want to terminate ssh connection
ssh -S /tmp/.ssh-aws-gateway-vpc1 -O exit aws-gateway-vpc1
このexit
コマンドを使用すると、PIDがわからない場合でもプロセスを終了できます。 PIDが本当に必要な場合は、次のcheck
コマンドを使用して表示できます。
$ ssh -S /tmp/.ssh-aws-gateway-vpc1 -O check aws-gateway-vpc1
Master running (pid=1234)