web-dev-qa-db-ja.com

1つのパブリックSSHサーバーを使用して、パブリックIPなしでAからCへの直接SSH接続をセットアップします

私はこれらの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台のコンピューターが認識している限り、それらはすでに接続を共有しているので、それは可能であると思いますか、それとも私は間違っていますか?

あなたの時間とアイデアをありがとう:)

4
jirislav
  • 通常の方法は、AまたはCのルーターで「NATポート転送」を設定することです。 (どのように行われるかはルーターによって異なりますが、どこにでも指示があります。)これを行うと、Cルーターのパブリックアドレス+「転送」ポートに接続でき、接続はCに送られます。

    (注:NATポート転送とSSHポート転送は似ていますが、ハンマーとドライバーのように異なるものです。混同しないでください。 。)

  • どちらのルーターにも管理アクセス権がない場合は、多くのゲームやP2Pプログラムと同様に、UPnPまたはNAT-PMPを使用してポート転送ルールを設定してみてください。これには、upnpcまたはnatpmpcコマンドを使用します。

  • 上記のいずれの方法も機能しない場合は、何らかの形式の NATホールパンチング が必要になります。 ( [〜#〜] tcp [〜#〜] および [〜#〜] icmp [〜#〜] 穴あけ記事も参照してください。)

    残念ながら、さまざまな特定のプログラムで広く使用されていますが、TCP用の汎用ツールはそれほど多くないようですがchownatは機能する可能性があります。

2
user1686

ルーターで何らかのポート転送を実行できない限り、これはおそらく不可能ですが、この場合、コンピューターCはまったく必要ありません。

問題は、あなたの例では、A-> Cから直接移動しておらず、パケットはすべてBを通過しているということです。

パブリックアドレスを持つ別のコンピューターがある場合は、スタートポグラフィーでVPNセットアップをセットアップし、VPN間のルーティングを使用して、いずれかのパブリックホストがフォールオーバーし、作業を続行できる仮想ネットワークを作成できます。 。私はOpenVPNでこれを行いました-いくつかの落とし穴があります-重要なものの1つは、リバースパスフィルタリングを無効にすることです。

1
davidgo