SSH端口转发
SSH端口转发: SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。 但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发 ,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道” (tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通 道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均 能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此 同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯
主要解决问题:保证数据安全通信的同时,突破某些防火墙的特殊限制,建立正常通信隧道。
SSH 端口转发能够提供两大功能: • 加密 SSH Client 端至 SSH Server 端之间的通讯数据
• 突破防火墙的限制完成一些之前无法建立的 TCP 连接
- 本地转发: -L localport:remotehost:remotehostport sshserver
- 选项: -f 后台启用
- -N 不打开远程shell,处于等待状态 -g 启用网关功能
- 示例: ssh –L 9527:telnetsrv:23 -N sshsrv telnet 127.0.0.1 9527 -----当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,
- 再解密被转发到telnetsrv:23
- data ----->localhost:9527 ----->localhost:XXXXX ----->sshsrv:22 ------> sshsrv:YYYYY ------>telnetsrv:23
- 远程转发: -R sshserverport:remotehost:remotehostport sshserver
- 示例: ssh –R 9527:telnetsrv:23 –N sshsrv ------让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh 服务转发请求到本机ssh客户端,
- 再由本机解密后转发到 telnetsrv:23
- Data ----->sshsrv:9527 ------>sshsrv:22 ------> localhost:XXXXX ------> localhost:YYYYY ------> telnetsrv:23
- 动态端口转发: 当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver 替之访问internet在本机firefox设置代理socket proxy:127.0.0.1:1080 ssh -D 1080 root@sshserver
本地转发
主机直接连接公司内部telnet服务器,数据明文传输不安全,防火墙也禁止,可以通过中间的ssh服务器的搭建ssh隧道,把tcp协议的telnet数据用ssh服务加密进入公司内部,然后ssh服务器就可以直接转发给telnet服务器
1.首先在telnet服务器上开启防火墙策略,禁止172.18.222.222直接连接
2.确保172.18.252.229上telnet服务器打开:首先确保/etc/xinetd.d/telnet 中disabled =no ,然后service xinetd restart,23端口打开
3.命令建立隧道,-Nf就是只搭好隧道后台运行,不加-f就是马上连接。
4 .值得注意的是此时打开的9527端口是主机172.18.222..222的
限制:需外部防火墙允许外部主机通过22端口来访问内部某个SSH服务器
远程转发
与本地转发大同小异,唯一不同的是将内部某台主机作为ssh客户端,外部主机ssh-server
动态端口转发
1.在172.18.252.229主机上设置防火墙策略使172.18.254.157不能直接连接
2.ssh -D 1080 172.18.222.222
3.curl --socks5 127.0.0.1 http://172.18.252.229
4.图形界面配代理
总结:
以上三种情况在某些特殊针对防火墙通信的情况下使用,突破防火情限制的同时保证数据的安全,很实用而不常用,需要了解并掌握!