Tim*_*Tim 5 ssh port-forwarding
维基百科说
在计算机网络中,端口转发或端口映射是网络地址转换 (NAT) 的一种应用,它在数据包穿过网关(例如路由器或防火墙)时将通信请求从一个地址和端口号组合重定向到另一个地址和端口号组合。
端口转发的定义是否适用于“SSH 端口转发”?
SSH 本地和远程端口转发中的“端口转发”是什么意思?
特别是什么被转发到什么样的 东西?
例如。在https://askubuntu.com/a/50075/1471 中,
将端口 80 从本地计算机 (localhost) 转发到端口 8000 上的远程主机的命令是 ssh -R 8000:localhost:80 oli@remote-machine。
您会说同样的话,还是会说“将远程主机上的端口 8000 转发到本地机器上的端口 80”?
Arc*_*mar 12
假设您在公司网络中有两台服务器。
从本地服务器“L1”,您可以通过端口 22 上的 ssh 访问远程服务器“R1”。
服务器 R1 托管 Web 服务,但防火墙/NAT/任何阻止直接访问端口 80。
由于 NAT 问题,“R1”无法直接访问“L1”。
从 L1 连接使用(两台主机上的同一用户)
ssh -L 10080:localhost:80 -R 10022:localhost:22 R1
Run Code Online (Sandbox Code Playgroud)
现在,
-L 10080:localhost:80
在 10080 上的本地浏览将转发到端口 80 上的远程主机(R1)、本地主机(例如远程 127.0.0.1),因此您可以浏览远程主机(R1),同时被防火墙/NAT 阻止。
-R 10022:localhost:22
远程使用 10022 端口会转发到 localhost (L1) 的 22 端口,你可以从远程发起 scp/ssh 到 localhost。(使用scp -P 10022 file localhost:
(注意上-P
))
这实际上是我从 Ubuntu (14.04) 笔记本电脑用来转到生产服务器的命令行(我可以使用 firefox 到 localhost:10080 并使用从服务器到 localhost:10022 的 scp 来带回文件)
现在你的 IP 是
192.168.1.1 L1
172.17.17.1 R1
Run Code Online (Sandbox Code Playgroud)
你用
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
Run Code Online (Sandbox Code Playgroud)
现在
关于什么
-R 8000:localhost:80
Run Code Online (Sandbox Code Playgroud)
这读作
-R
偏僻的8000
端口 8000(远程端口 8000 ...)localhost
(远程端口 8000 转到本地主机 .. )80
(远程端口 8000 转到本地主机端口 80 )