【计算机网络】通过ssh端口转发建立网络隧道
905 字
5 分钟
【计算机网络】通过ssh端口转发建立网络隧道

0x00
概述
SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling)。这是因为 SSH 为其他 TCP 连接提供了一个安全的通道,避免了用户名,密码以及隐私信息的明文传输。例如,Telnet,SMTP,LDAP 这些 TCP 应用。
某些特殊的网络环境中的防火墙限制访问一些端口,但能进行ssh连接,在这种情况下可以使用ssh将限制访问的tcp进行转发访问。
0x01
本地转发
将服务器的限制访问的端口转发到客户端本地。


命令规则:
ssh -L [local host:]<local port>:<remote host>:<remote port> <ssh hostname>实例&解释:
ssh -L 8001(指定本地端口):服务器ip:8000(被限制访问的端口) root@服务器ip
ssh -L 8001(指定本地端口):服务器ip:8000(被限制访问的端口) root@跳板机ip当ssh登录成功后就已经将服务器端口转发到客户端本地端口了,上面实例客户端访问地址:127.0.0.1<8001>8001>
注意
- 在上面的命令加一个
-g可以让其他设备访问客户端
ssh -L 8000:服务器ip:8000 root@服务器ip等价于ssh -L 127.0.0.1:8000:服务器ip:8000 root@服务器ipssh -g -L 8000:服务器ip:8000 root@服务器ip等价于ssh -L 0.0.0.0:8000:服务器ip:8000 root@服务器ip- 转发时要一直保持ssh的连接,也就是不能关闭ssh的命令窗口。也可以添加
-qTfNn用于告知ssh连接成功后就转到后台运行。
远程转发(反向代理)
远程访问就是将本地内网端口的流量通过一台公网设备转发出来

ssh -g -R [ssh server host:]<SSH server port>:<local host>:<local port> <SSH hostname>实例:
ssh -g -R 8000(指定公网设备的端口):内网设备ip:8000(内网设备的端口) root@公网设备ip注意
- 和本地访问一样转发时不能关闭ssh命令窗口。也可以添加
-qTfNn用于告知ssh连接成功后就转到后台运行。 - 转发失败时检查
/etc/ssh/sshd_config文件,将AllowTcpForwarding选项设置为yes。
动态转发(Socks代理)
开启一条Socks隧道。 前面的本地转发和远程转发都需要指定端口进行转发,而动态转发则不需要指定端口就可以转发(不建议使用这个来fq,因为该方法早已被GFW和谐),可以进行内网访问。

ssh -D <local port> <SSH Server>实例:
ssh -D 8000(本地指定的端口) root@进行转发的服务器ip(跳板)ssh执行为后台任务
ssh -qTfNn用于建立纯端口转发用途的ssh连接,参数具体含义如下:
-q: quiet模式,忽视大部分的警告和诊断信息(比如端口转发时的各种连接错误)-T: 禁用tty分配(pseudo-terminal allocation)-f: 登录成功后即转为后台任务执行-N: 不执行远程命令(专门做端口转发)-n: 重定向stdin为/dev/null,用于配合-f后台任务
END
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
树莓派通过USB方式与计算机连接(Win10)
树莓派笔记2018-07-25
2
【网络】Caddy + PHP7.3
杂项2019-11-05
3
【Docker】macvlan网络模式下容器与宿主机互通
Docker笔记2020-09-08
4
计算机网络-根据掩码和ip计算网段起始ip和最终ip
杂项2018-04-23
5
【linux】目录
Linux笔记2024-02-19
随机文章随机推荐















加载更多…