
家にはパソコンがあります(ホームサーバー) で、irssi、rtorrent などを実行しています。私の ISP は外部からのすべてのトラフィックをブロックしています (愚かなことだとはわかっていますが、私が利用できる ISP は他にありません)。
ログインできるようにしたいホームサーバーのシェルからリモートコンピュータ(NAT の背後)。
どこかにシェル アカウント (ルート アクセスなし) があるので、それが役に立つかもしれません。
状況を説明する図は次のとおりです。
これで私のシェルにアクセスできるようになるのでしょうか?ホームサーバー? SSH トンネリングについて何か聞いたことがありますが、このケースに一致するチュートリアルは見つかりませんでした。
答え1
ホームサーバー(サードパーティからホームへのトンネル):
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 サーバーが接続を取得します。
答え2
以下に、受け入れられている解決策を詳しく説明します。「マシン A」と「マシン B」の両方が NAT ファイアウォールの背後にあると仮定します。両方ともリモートの「マシン R」(VPS など) への SSH アクセス権を持っています。
R -> A
ssh -R 20000:127.0.0.1:22 user@RemoteHost
上記のコマンドはマシン上で実行されましたあ。
トンネルを作成するR(Rのポート20000) にあ(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)-> あ(ポート22)
PuTTY と Windows を使用した場合も同様です:
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
答え3
または、HE.net で IPv6 トンネルをいくつか設定して直接接続することもできます... (多くの VPN ソリューションも同様に機能します。)