Ya, ini disebut GatewayPorts
di SSH. Kutipan dari ssh_config(5)
:
GatewayPorts
Specifies whether remote hosts are allowed to connect to local
forwarded ports. By default, ssh(1) binds local port forwardings
to the loopback address. This prevents other remote hosts from
connecting to forwarded ports. GatewayPorts can be used to spec‐
ify that ssh should bind local port forwardings to the wildcard
address, thus allowing remote hosts to connect to forwarded
ports. The argument must be “yes” or “no”. The default is “no”.
Dan Anda dapat menggunakan localhost
bukannya M
dalam penerusan, saat Anda meneruskan ke mesin yang sama dengan yang Anda gunakan untuk SSH -- jika saya memahami pertanyaan Anda dengan benar.
Jadi, perintahnya akan menjadi seperti ini:
ssh -L 2222:localhost:8888 -N -o GatewayPorts=yes hostname-of-M
dan akan terlihat seperti ini di netstat -nltp
:
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 5113/ssh
Sekarang siapa pun yang mengakses mesin ini di port 2222 TCP akan benar-benar berbicara dengan localhost:8888 seperti yang terlihat di mesin M. Perhatikan bahwa ini tidak sama dengan meneruskan biasa ke port 8888 dari M.
Ada cara lain. Anda dapat mengatur penerusan porta dari S:2222 ke W:8888 dengan iptables. Perintah tunggal:
iptables -t nat -A PREROUTING -p tcp --dport 2222 \
-j DNAT --to-destination 1.2.3.4:8888
di mana 1.2.3.4 adalah alamat IP M. Ini disebut NAT (Terjemahan Alamat Jaringan).
Alternatif lainnya:netcat
(tradisional) atau socat
Di server (S):
socat tcp-listen:2222,reuseaddr,fork tcp:M:8888
atau
nc -l -p 2222 -c 'nc M 8888'
Detail lihat di:Cara sederhana untuk membuat terowongan dari satu port lokal ke port lokal lainnya?