2016-12-20 18 views
2

を作成されているかどうかを知るには、ここで私はMY_COMPUTER私は/bin/falseバッシュ - SSHトンネルが正しく

シェル/etc/passwdに持っているユーザーremoteuserを持っている上REMOTE_VMという名前のマシンの名前、自分のコンピュータを持っている状況

ですこのユーザーには1つの機能しかありません。逆SSH後にできるようにSSHトンネルを実行します。

私が現在使用しているコマンドは、私はスクリプトで実行するには、このコマンドを希望し、コールバックや方法を取得する方法を持っているために(バックグラウンドでこのsshコマンドを置くようにしてください

ssh \ 
    -nNT \ 
    -R 42242:127.0.0.1:22 \ 
    [email protected]_VM 

です接続が実際に開かれたことを確認し、遅いネットワークの場合は単に接続が保留されているかどうかをチェックするために、ソケットファイルの存在を定期的にチェックするなど)。

openssh-clientにはそうした方法がありますか、またはあなたが望むときにコールバックを入れることができるようにsshクライアントのカスタム実装を行う必要がありますか?

普通のopenssh-clientとbashを使ってできるだけ多くの(もっと汚れた)ソリューションを好むでしょう。

+0

私はsshプロセスのテストがすべてあなたが必要としていると思います。 – Arkadiy

+1

@Arkadiyしかし、接続がまだネゴシエートされている可能性があるので、プロセスがもう終了していない場合には失敗したことがわかります。接続が確立されていることを保証していない –

答えて

1

コマンドを冗長に実行して出力をキャプチャし、出力がセッションが確立されたことをテストしますか?

TMPFILE=$(mktemp) 
2>"$TMPFILE" ssh -v -nNT -R 42242:127.0.0.1:22 [email protected]_VM & 
grep 'debug1: Entering interactive session.' "$TMPFILE" 

また、netstatの出力をポーリングすることもできます。

+0

ありがとう、実際には、そのような汚いソリューションのように見えない:) –