ホームネットワークにサーバーがあり(ポート転送できません)、WANにVPSがあります。特定のポートに対する要求が必要です。到着、私のホームサーバーに転送されるVPSではありません。 SSHトンネルがあり、localhost
VPSに要求を送信すると正常に動作します。しかし、インターネットからVPSに転送された要求がlocalhost
私のホームサーバーにトンネリングされることを望みます。そして双方向道路でなければなりません。
私は見たこれ質問がありますが、私にはうまくいきません。私が何か間違っているようです。
私の正確なプロセス:私のホームサーバーで次のコマンドを実行してトンネルを設定します
。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
まだsshd_config
同じ問題が発生します。
ssh:ホストserver-b.comポート2223に接続中:接続が拒否されました。。
答え1
サーバーに設定GatewayPorts yes
します。 IPを明示的に参照するか、サーバーにリバーストンネルを作成します。このように、サーバーのsshdはパブリック接続も許可します。AllowTcpForwarding yes
sshd_config
b
GatewayPorts clientspecified
0.0.0.0
*
a
b
ssh -NTR *:2222:localhost:22 [email protected]
それ以外の場合、sshdは.NET Frameworkと同様にループバックインターフェイスのみを受信しますGatewayPorts no
。
今、ssh
別のマシンからポートへ2222
:
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
今、
ssh
別のマシンからポートへ2223
:ssh [email protected] -p 2223
2223
別のオプションは2222
。ssh
socat
netcat
*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
サーバーのステップ:
ssh -TR *:2222:localhost:22 [email protected] "ssh -4gfNTL 2223:localhost:2222 localhost"