ファイアウォールをブリッジするために netcat を使用しますか?

ファイアウォールをブリッジするために netcat を使用しますか?

ファイアウォールの背後にマシンがあります。それは私のマシンで、ssh を設定しましたが、完全にファイアウォールで保護されています。私の解決策は、cron ベースで設定されたリバース シェルを使用して、netcat を使用して失敗した場合に再接続することです。コマンドは、ローカルbash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1コンピュータでnc -l 10000および です。コマンドを使用してプライベート VPN に参加するように指示できるため、これまではこれが機能していました。何らかの理由で、そのコマンドが機能しません。そのため、生成された bash シェルを介して「ログイン」することはできますが、Pseudo-terminal will not be allocated because stdin is not a terminal.そのシステムで ssh キーを設定したことがないため、自分のコンピュータに ssh で戻ることができず、パスワードでログインできません。

そこで、netcat を使用して解決策を見つけようとしましたが、うまくいきませんでした。私が思い描いているのは次のようなものです。

[サーバー] ---netcat--> [my-computer:port1]

そうすれば、それを利用して sshd サーバーにログインし、修正が必要な箇所を修正できます。しかし、それを実現する netcat コマンドがわかりません。何か助けてもらえませんか?

答え1

インターネットの残りの人々(そして私自身)のための答えを見つけました。netcat のみを使用してポート転送を実現する方法は次のとおりです(OS X El Capitan で動作することが確認されています)。

(受信)ファイアウォールの背後にあるサーバーの場合:

nc localhost 22 >& /dev/tcp/<your-hostname>/<open port on local computer, i.e. 9000> 0>&1

ローカルコンピューターの場合:

cd /tmp; mkfifo backpipe
nc -l 9000 0<backpipe | nc -l 9001 | tee backpipe

ローカル コンピューター上の別のターミナル:

ssh localhost -p 9001

関連情報