小工具 · 2022年2月16日 0

ssh端口转发

ssh提供了三种端口转发的方式,可以建立安全的ssh隧道

本地端口转发

将远程主机的80端口转发到本地7777端口

ssh -L 7777:127.0.0.1:80 username@192.168.239.239

大概是一种进入内网的姿势,当B主机可以访问C主机,但A主机无法访问时,使用A主机可以通过ssh连接到B主机将C主机的端口转发到A主机,也可以转发B主机上监听的地址为127.0.0.1的端口:

ssh -L 7777:C主机IP:80 username@B主机IP

远程端口转发

将本地8888端口映射到远程主机的7777端口

ssh -R 0.0.0.0:7777:127.0.0.1:8888 username@192.168.239.239

可以实现端口映射,同时还能使得内网中不出网的靶机C通过B主机的端口上线

ssh -R 0.0.0.0:7777:127.0.0.1:8888 username@B主机IP

通常映射的端口只有B主机一台主机能访问,要时其他主机也能访问可以在/etc/ssh/sshd_config中加入下面的配置

GatewayPorts yes

动态端口转发

使用本地8888端口进行socks5代理,通过目标主机访问其他资源

ssh -D 8888 username@192.168.239.239

B主机可以访问某些资源,但本机不能访问时可以用这种方式将B主机作为代理服务器访问到这些资源

在ssh端口转发后可以将目标主机作为代理服务器:

curl --proxy socks5://127.0.0.1:8888 http://192.168.239.78

其他参数

在连接时还可以加上某些参数时端口转发在后台运行:

-C 压缩数据
-f 后台运行
-N 不执行命令
-T 不分配tty
-g 启用网关功能

例如:

ssh -fNTD 8888 username@192.168.239.239

然后ssh可以在后台运行