で/etc/ssh/sshd
用コンピュータBのセット:
AllowTcpForwarding yes
TCPKeepAlive yes
コンピューターAから:
$ ssh -R 2222:localhost:22 ip.of.computer.b
コンピューターBから:
$ ssh localhost -p 2222
2222は、私が選んだ任意の高ポート番号であることに注意してください。コンピューターBのそのポートは、コンピューターAで初期化されたSSH接続を介してポート22にトンネリングされます。複数のマシンがある場合は、マシンごとに異なるポートを使用する必要があります。
ユースケースでは、おそらくスクリプトからこれを実行して、デーモンにし、リンクが切断された場合に定期的に再接続を試みることができます。受信接続を処理するために、おそらくコンピュータBのシェルのみ/bin/true
を持つ特別なアカウントが必要になるでしょう。その後、「コールホーム」を許可されたマシンごとに単一のキーまたは複数のキーをセットアップできます。
上のコンピュータA君が見つけるかもしれない-n
、-N
と-T
だけトンネルを開いて、任意のリモートコマンドを実行しようと、ない(それがバックグラウンドで実行できるようにする)、およびTTYを作成していない便利なオプションは、ローカルの入力からそれを切断します。
デーモンを生成するほとんどの通常の方法は、このようなネットワークトンネルのセットアップではうまく機能しません。ネットワーク接続の問題により、壁を打ち破って通過しようとします。待機するスリープを備えた単純なループがこのトリックを行うはずです。それはネットワークを氾濫し、(のような問題があるかどうattempsとログファイルをしないので、10分には、素敵な数であるコンピュータBというオフライン)それはまだ戻って合理的に迅速な接続がdropedされている場合であなたを取得します。
#/bin/sh
while true; do
sleep $((60*10))
ssh -nNT -R 2222:localhost:22 ip.of.computer.b
done
そのようなスクリプトは、起動時に起動して実行できます/etc/rc.local
。マシンにログインするための最初の変更は、コンピューターAが起動してから約10分後に開始されます。