Skip to content

SSH端口转发

solei1 edited this page Feb 16, 2017 · 1 revision

本地端口转发

用法:ssh -L local_port:remote_host:remote_port user@server

把本地机器的local_port的流量经过server转发给remote_host的remote_port

也就是说流量的流动方向是 local_port--> server--> remote_port

例如本机是192.168.56.5,另一台机器是192.168.56.7

在192.168.56.5上用本地转发

ssh -L 2222:127.0.0.1:23456 user@192.168.56.7
意思就是:把192.168.56.5的2222端口的流量转发到192.168.56.7的23456端口

127.0.0.1是相对192.168.56.7而言的,因为remote_addr是在server解析的

远程端口转发

用法:ssh -R serv_port:remote_host:remote_port user@server

把server的serv_port端口的流量经过本地转发到remote_host的remote_port端口

例如远程主机是123.123.123.123,本机是192.168.56.5

在本机用远程转发

ssh -R 2345:127.0.0.1:22 123.123.123.123
意思是:把远程主机2345的端口流量转发到本地的22端口

127.0.0.1是相对本地来说的,因为remote_host是在本地解析的

那么你可以ssh -p 2345 123.123.123.123来登陆到192.168.56.5


本地转发与远程转发

他俩的区别容易让人迷糊

本地转发就是把本地的端口经过server转发到远程主机

远程转发就是把server的端口经过本地转发给远程主机

其中远程主机和本地,server和远程主机都可以合二为一,灵活的运用可以达到很多意想不到的效果

动态端口转发

使本地主机监听端口port,一旦与该端口建立连接,经过该端口的数据会被转发到安全通道发送到远程主机。远程主机的sshd会根据数据包的应用层协议(如HTTP)自动建立对应的连接。

用法:ssh -D local_port server

这是你的local_port端口就相当于是一个SOCKS代理,在浏览器里设置代理就可以转发流量上网。

如果server是境外服务器那么就可以翻墙了

其他

-f ssh后台运行

-N 不执行命令,只转发端口

-C 压缩传送的数据

-g 允许远程主机去连接本地指派的 ports。

由于ssh不稳定,端口转发随时可能会失去连接,这时需要autossh来重新请求连接来维持端口转发

Clone this wiki locally