web-dev-qa-db-ja.com

sshpassプロセスをバックグラウンドで維持する方法は?

sshpass -p '1234567*' ssh -L 1080:192.168.0.1:2222 [email protected] -p 4422 -f -C -N

上記のコードはmacOSで機能します(ユーザー名adminとパスワード1234567 *を使用してgateway.com:4422経由で192.168.0.1:2222への1080トンネルを作成します)。\

Linuxでは動作しません-プロセスは実行され、すぐに終了するようです。

1
Aero Wang

sshpass + sshの問題は、sshが最初にユーザーを認証し、子をフォークして接続を処理してから終了することです。ただし、sshpassは、親sshが終了するとすぐに、子が端末から自分自身を切り離す前に、子の下からラグを引き出します(sshpass)、その結果、SIGHUPシグナルによって強制終了されます。

したがって、これは機能します。

sshpass -p '1234567*' sh -c 'ssh -L 1080:192.168.0.1:2222 [email protected] -p 4422 -f -C -N && sleep .1'

0
Aero Wang