维基百科说
在计算机网络中,转发端口端口映射是网络地址转换 (NAT) 的一种应用,当数据包穿过路由器或防火墙等网络网关时,它将通信请求从一个地址和端口号组合重定向到另一个地址和端口号组合。
端口转发的定义是否适用于“SSH端口转发”?
SSH本地和远程端口转发中的“端口转发”是什么意思?
尤其什么被转发到什么经过 什么?
例如。在https://askubuntu.com/a/50075/1471,
将端口 80 从本地计算机 (localhost) 转发到端口 8000 上的远程主机的命令是 ssh -R 8000:localhost:80 oli@remote-machine。
您会说同样的话吗,或者您会说“将远程主机上的端口 8000 转发到本地机器上的端口 80”?
答案1
1 - 一般情况
假设您的公司网络中有两台服务器。
从本地服务器“L1”,您可以通过端口 22 上的 ssh 访问远程服务器“R1”。
服务器 R1 托管 Web 服务,但防火墙/NAT/任何阻止对端口 80 的直接访问。
由于 NAT 问题,“R1”无法直接访问“L1”。
从 L1 开始使用(两台主机上的同一用户)进行连接
ssh -L 10080:localhost:80 -R 10022:localhost:22 R1
现在,
-L 10080:localhost:80
10080 上的本地浏览将转发到端口 80 上的远程主机(R1)、本地主机(例如远程 127.0.0.1),因此您可以浏览远程主机(R1),同时被防火墙/NAT 阻止。-R 10022:localhost:22
远程使用端口10022将被转发到本地主机(L1)端口22,您可以从远程启动scp/ssh到本地主机。 (使用scp -P 10022 file localhost:
(注意上-P
))
这实际上是我在 Ubuntu (14.04) 笔记本电脑上使用的命令行来访问生产服务器(我可以使用 Firefox 访问 localhost:10080 并使用 scp 从服务器访问 localhost:10022 来带回文件)
现在你的IP是
192.168.1.1 L1
172.17.17.1 R1
你用
ssh -L 10080:172.17.17.3:80 -R 10022:192.168.1.5:22 \
-L 192.168.1.9:8888:172.17.17.9:9999 R1
现在
- 远程访问端口 10022(任何 IP)将转发到本地 192.168.1.5 ssh/scp。
- 本地对端口 10080(任何 IP)的访问将被转发到远程主机 172.17.17.3 端口 80。
- 从 192.168.1.9 对端口 8888 的本地访问将被转发到 172.17.17.9 上的端口 9999(192.168.1.9 是 L1 中的本地地址,使用别名机制,这不是防火墙规则)。
问个Ubuntu问题
关于什么
-R 8000:localhost:80
这读作
-R
偏僻的8000
端口 8000(远程端口 8000 ...)localhost
(远程端口 8000 到 localhost ..)80
(远程端口 8000 转到本地主机端口 80 )