私はこれらのSSHサーバー/クライアントを利用できます:
A-パブリックIPなし
B-パブリックIP
C-パブリックIPなし
私は知っています、私は次のようにAからCへのSSH接続を確立することができます:
1)CをBにフックします。Cから行う:
ssh -R 10100:localhost:22 B_IP
2)マシンAでssh-agentを使用できるようにするには、Bフックを使用してAからCへのポート転送を設定します。
ssh -L 5000:localhost:10100 B_IP
3)これで、sshキーを使用して、AからCに「直接」アクセスできます。
ssh -p 5000 localhost
...私のポイントは:
AからCへの新しい「純粋な」接続を何らかの方法で確立できますかマシンBがダウンした後、作業を続行できるようにしますか?
これらの2台のコンピューターが認識している限り、それらはすでに接続を共有しているので、それは可能であると思いますか、それとも私は間違っていますか?
あなたの時間とアイデアをありがとう:)
通常の方法は、AまたはCのルーターで「NATポート転送」を設定することです。 (どのように行われるかはルーターによって異なりますが、どこにでも指示があります。)これを行うと、Cルーターのパブリックアドレス+「転送」ポートに接続でき、接続はCに送られます。
(注:NATポート転送とSSHポート転送は似ていますが、ハンマーとドライバーのように異なるものです。混同しないでください。 。)
どちらのルーターにも管理アクセス権がない場合は、多くのゲームやP2Pプログラムと同様に、UPnPまたはNAT-PMPを使用してポート転送ルールを設定してみてください。これには、upnpc
またはnatpmpc
コマンドを使用します。
上記のいずれの方法も機能しない場合は、何らかの形式の NATホールパンチング が必要になります。 ( [〜#〜] tcp [〜#〜] および [〜#〜] icmp [〜#〜] 穴あけ記事も参照してください。)
残念ながら、さまざまな特定のプログラムで広く使用されていますが、TCP用の汎用ツールはそれほど多くないようですがchownatは機能する可能性があります。
ルーターで何らかのポート転送を実行できない限り、これはおそらく不可能ですが、この場合、コンピューターCはまったく必要ありません。
問題は、あなたの例では、A-> Cから直接移動しておらず、パケットはすべてBを通過しているということです。
パブリックアドレスを持つ別のコンピューターがある場合は、スタートポグラフィーでVPNセットアップをセットアップし、VPN間のルーティングを使用して、いずれかのパブリックホストがフォールオーバーし、作業を続行できる仮想ネットワークを作成できます。 。私はOpenVPNでこれを行いました-いくつかの落とし穴があります-重要なものの1つは、リバースパスフィルタリングを無効にすることです。