web-dev-qa-db-ja.com

3番目のパブリックIPコンピューターを介した2台のinhead-natコンピューター間のSSH接続

私は自宅にirssi、rtorrentなどを実行するコンピューター(home-server)を持っています。私のISPは外部からのすべてのトラフィックをブロックしています(ばかげていますが、私が持つことができる唯一のISPです)。

home-serverのシェルに任意のremote-computer(NATの背後)からログインできるようにしたい。

私はどこかに(rootアクセスなしで)シェルアカウントを持っています、それはそれへのいくらかの使用かもしれません。

状況を説明する図は次のとおりです。 enter image description here

これは私のhome-serverでシェルにアクセスすることは可能ですか? sshトンネリングについて何か聞いたのですが、このケースに一致するチュートリアルが見つかりませんでした。

8
seler

ホームサーバー上(サードパーティからホームへのトンネル):
ssh -R 20000:127.0.0.1:22 thirdparty.org

これにより、ホームボックスがサードパーティのシェルに接続され、サードパーティのシェルのポート20000からホームボックスのポート22(SSHポート)への接続の転送が開始されます。

リモートコンピューター(リモートからサードパーティへのトンネル):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

これにより、リモートボックスがサードパーティのシェルに接続され、リモートボックスのポート20000がサードパーティのシェルのポート20000に転送され始めます。

次に、リモートコンピューター(トンネル経由で接続):
ssh 127.0.0.1:20000そしてホームサーバーの資格情報を入力します

これにより、リモートボックスのポート20000にSSH接続しようとします。サードパーティへのトンネルを設定したため、#2コマンドは、この接続試行をサードパーティシェルの127.0.0.1:20000に効果的に転送します。次に、最初のコマンドはホームボックスのポート22への接続を再度転送し、その時点でsshサーバーが接続を取得します。

16
Darth Android

私は以下の受け入れられた解決策をよりよく説明しようとしました。 「マシンA」と「マシンB」の両方がNATファイアウォールの背後にあると仮定します。どちらもリモートの「マシンR」(たとえばVPS)にsshアクセスできます。

R-> A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. 上記のコマンドはマシンで実行されました[〜#〜] a [〜#〜]

  2. [〜#〜] r [〜#〜]Rのポート20000からトンネルを作成します)から[〜#〜] a [〜#〜]Aのポート22)(リバーストンネリング)

B-> R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. 上記のコマンドは[〜#〜] b [〜#〜]で実行されました。

  2. [〜#〜] b [〜#〜]Bのポート8000​​からトンネルを作成します)から[〜#〜] r [〜#〜]Rのポート20000

B-> A

ssh 127.0.0.1 -p 8000

実際の接続は[〜#〜] r [〜#〜]、つまり[〜#〜] b [〜#〜](ポート8000​​)->[〜#〜] r [〜#〜](ポート20000)-> A(ポート22)


PuTTYとウィンドウを使用して同じ:

R-> A

PuTTY.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B-> R

PuTTY.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

B-> A

PuTTY.exe -ssh 127.0.0.1 -P 8000 -l user -pw password
7
Ryu_hayabusa

または、HE.netを使用していくつかのIPv6トンネルをセットアップし、直接接続することもできます...(多くのVPNソリューションも同様に機能します)。

1
billc.cn