SSH 端口转发小结
source link: https://beginor.github.io/2020/05/13/sumary-of-port-forward-with-ssh.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
SSH 端口转发小结
Linux 的 SSH 服务不仅仅能够远程登录和管理,还可以在本地计算机和服务器之间建立 TCP 通道, 实现代理、内网穿透、暴露内网服务等功能,简单可靠。
动态端口转发
将向本地指定端口发送的请求通过 SSH 服务器向外转发。 比如将 SSH 服务器作为一个代理服务器。
#!/bin/bash -e
ssh -C -T -N -D 127.0.0.1:8088 [email protected]
将
127.0.0.1:8088
作为一个 SOCKS4/5 的代理, 比如curl --proxy socks5://127.0.0.1:8088 https://www.google.com
。
参数说明:
C
请求压缩所有数据;T
禁用模拟终端;N
不执行远程指令, 常用于仅做端口转发;D [local_ip:]port
动态端口转发, 实现代理服务器, 支持 SOCKS4 和 SOCKS5 协议;
本地端口转发
将远程服务器的指定端口通过 SSH 服务器转发到本地计算机端口。 比如将内网服务器的远程桌面 (192.168.6.71:3389) 经过 SSH 服务器 (192.168.6.67) 转发到本地计算机的 3390 端口 (127.0.0.1:3390) 。
#!/bin/bash -e
ssh -C -T -N -L 127.0.0.1:3390:192.168.6.71:3389 [email protected]
访问
127.0.0.1:3390
就等于访问192.168.6.71:3389
。
参数说明:
C
压缩所有数据;T
禁用模拟终端;N
不执行远程指令, 常用于仅做端口转发;L [local_ip:]local_port:remote_ip:remote_port
本地端口和远程服务器IP端口的 TCP 隧道;
远程端口转发
将本地计算机的指定端口经过 SSH 服务器转发到远程服务器的指定端口。 比如将本地局域网计算机的服务 (IIS、NGINX、DB) 等经过 SSH 服务器暴露出去。
#!/bin/bash -e
ssh -T -N -R 192.168.6.67:9090:127.0.0.1:9090 [email protected]
访问
192.168.6.67:9090
就等于访问127.0.0.1:9090
。
参数说明:
C
压缩所有数据;T
禁用模拟终端;N
不执行远程指令, 常用于仅做端口转发;R [ssh_server_ip:]ssh_server_port:local_ip:local_port
SSH 服务器到本地/局域网计算机的的 TCP 隧道;
如果不成功, SSH 服务可能默认没有启用远程端口转发, 需要编辑 SSH 服务器上的
/etc/ssh/sshd_confif
文件, 添加或者编辑GatewayPorts yes
选项, 并重启 sshd 服务。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK