ホームネットワークにサーバーがあり(ポート転送不可)、WANにVPSがあります。ホームサーバーに転送するVPSからではなく、toの特定のポートでの要求が必要です。 VPSでlocalhost
にリクエストを送信すると正常に機能するSSHトンネルがあります。しかし、インターネットからVPSのlocalhost
に転送されたリクエストを、トンネル経由でホームサーバーに送信したいのですが。また、双方向である必要があります。
私は this の質問を見ましたが、それは私にはうまくいきません。私が何か間違ったことをした可能性は十分にあります。
私の正確な手順:
ホームサーバーのサーバーa
で、次のコマンドを実行してトンネルをセットアップしました。
ssh -v -N -R 2222:localhost:22 [email protected]
サーバーb
(VPS)で次のコマンドを実行しました。
iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to-destination 127.0.0.1:2222
そして、別のマシンからssh
を試しました:
ssh [email protected] -p 2223
GatewayPorts yes
in sshd_config
ただし、同じ問題がまだ見つかります。
ssh:ホストserver-b.comポート2223に接続:接続が拒否されました 。
サーバーb
のGatewayPorts yes
にAllowTcpForwarding yes
とsshd_config
を設定します。 GatewayPorts clientspecified
を使用して、サーバーa
のIP 0.0.0.0
または*
に明示的に言及し、リバーストンネルを作成します。サーバーb
のsshdがパブリックからの接続も受け入れるように:
ssh -NTR *:2222:localhost:22 [email protected]
それ以外の場合、sshdはGatewayPorts no
の場合と同様に、ループバックインターフェイスでのみリッスンします。
別のマシンからポート2222
にssh
を追加します。
ssh [email protected] -p 2222
認証後、サーバーa
にログインします。iptables
転送を設定する必要はありません。ところで、可能であれば、リモートログインにはユーザーroot
を使用しないでください。
GatewayPorts
オプションを設定しない場合は、2223
などの他のポートからlocalhost:2222
にトラフィックを転送する必要があります。
これは、サーバーiptables
のb
で実行できます。
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 2223 -j DNAT --to-destination 127.0.0.1:2222
* REDIRECT
は同じインターフェースでのみ機能します
しかし loopback
インターフェースへのルーティング は次の場合を除いて許可されません。
echo 1 | Sudo tee /proc/sys/net/ipv4/conf/all/route_localnet
別のマシンからポート2223
にssh
を追加します。
ssh [email protected] -p 2223
別のオプションは、ssh
、socat
、netcat
、2223
などのツールを使用して、ポート2222
から*inetd
に最小限のローカル転送サーバーをセットアップすることです。
サーバーb
で、socat
を使用:
socat TCP-LISTEN:2223,fork TCP:127.0.0.1:2222
またはnetcat
を使用:
nc -l -p 2223 -c "nc 127.0.0.1 2222"
またはssh
を使用:
ssh -4gfNTL 2223:localhost:2222 localhost
上記のいずれかをリバーストンネルと組み合わせて、サーバーa
からのダブルフォワーディングを1つの手順で実行できます。
ssh -TR *:2222:localhost:22 [email protected] "ssh -4gfNTL 2223:localhost:2222 localhost"