1. 本地端口转发
本地转发通过参数 -L
指定,格式:-L [本地主机:]本地主机端口:远程网络主机:远程网络主机端口
。加上ssh待登录主机,这里就有了三台主机。
举例:ssh -L 0.0.0.0:50000:host2:80 user@host1。这条命令将host2
的80端口映射到本地的50000端口,前提是待登录主机host1
上可以正常连接到host2
的80端口。
其实就是一个依托ssh隧道的一个正向代理。 在本地开启一个监听端口。然后设置要访问的服务。我们可以通过远程主机服务器,去将我们本地的端口映射到访问指定的主机的端口。
2. 远程端口转发
远程转发是指把登录主机所在网络中某个端口通过本地主机端口转发到远程主机上。
远程转发通过参数 -R
指定,格式:-R [登录主机:]登录主机端口:本地网络主机:本地网络主机端口
。
举例:ssh -R host1:8080:本地ip:80 user@host1。其实就是在远程服务器上开一个端口,然后将本地的服务映射到远程的端口。那么其他的能访问远程端口的机器就能访问到我本地的服务。常见于我们本地有一个服务,通过远程vps的端口转发使得别人能够访问到我本地服务。
- sshd_config里要打开
AllowTcpForwarding
选项,否则-R
远程端口转发会失败。 - 默认转发到远程主机上的端口绑定的是
127.0.0.1
,如要绑定0.0.0.0
需要打开sshd_config里的GatewayPorts
选项
3. 动态转发
动态转发通过参数 -D
指定,格式:-D [本地主机:]本地主机端口
。相对于前两个来说,动态转发无需再指定远程主机及其端口。它们由通过 SOCKS协议 连接到本地主机端口的那个主机。
举例:ssh -D 50000 user@host1。这条命令创建了一个SOCKS代理,所以通过该SOCKS代理发出的数据包将经过host1
转发出去。
3.1 使用
其实就是一个代理 浏览器直接开代理进行http协议的访问,kali里面就直接proxychains就可以。