私は自宅にirssi、rtorrentなどを実行するコンピューター(home-server)を持っています。私のISPは外部からのすべてのトラフィックをブロックしています(ばかげていますが、私が持つことができる唯一のISPです)。
home-serverのシェルに任意のremote-computer(NATの背後)からログインできるようにしたい。
私はどこかに(rootアクセスなしで)シェルアカウントを持っています、それはそれへのいくらかの使用かもしれません。
状況を説明する図は次のとおりです。
これは私のhome-serverでシェルにアクセスすることは可能ですか? sshトンネリングについて何か聞いたのですが、このケースに一致するチュートリアルが見つかりませんでした。
ホームサーバー上(サードパーティからホームへのトンネル):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サーバーが接続を取得します。
私は以下の受け入れられた解決策をよりよく説明しようとしました。 「マシンA」と「マシンB」の両方がNATファイアウォールの背後にあると仮定します。どちらもリモートの「マシンR」(たとえばVPS)にsshアクセスできます。
R-> A
ssh -R 20000:127.0.0.1:22 user@RemoteHost
上記のコマンドはマシンで実行されました[〜#〜] a [〜#〜]。
[〜#〜] r [〜#〜](Rのポート20000からトンネルを作成します)から[〜#〜] a [〜#〜](Aのポート22)(リバーストンネリング)
B-> R
ssh -L 8000:127.0.0.1:20000 user@RemoteHost
上記のコマンドは[〜#〜] b [〜#〜]で実行されました。
[〜#〜] 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
または、HE.netを使用していくつかのIPv6トンネルをセットアップし、直接接続することもできます...(多くのVPNソリューションも同様に機能します)。