SSH端口转发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH端口转发相关的知识,希望对你有一定的参考价值。

   首先让我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能:

    1、加密 SSH Client 端至 SSH Server 端之间的通讯数据。

    2、突破防火墙的限制完成一些之前无法建立的 TCP 连接。

   接下来就分别介绍一下几个端口转发的实例:

  (一)本地端口转发     

这里先搭建一个实验环境,实现主机A通过服务器B连接到服务器C:centos6作为主机A,rhel5作为B,centos7作为C。(补充一点:如果一个端口号只允许自己连接,可编辑/etc/postfix/main.cfinet_interfaces = all

#inet_interfaces = $myhostname

#inet_interfaces = $myhostname, localhost

#inet_interfaces = localhost)

systemctl restart postfix.service

技术分享

1、在A上运行:ssh -L 9527:192.168.206.147:23 -fN 192.168.206.145

2、在A上查看从A到B的通道是否已经建立:ss -nt

技术分享

     3、切换到B上查看一下:

技术分享

         4、切换到C上在看一下,并没有任何主机在连接。

技术分享

         5、在本机A上执行:telnet 127.0.0.1 9527,当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23。此时到C上查看连接的主机会发现是B在连接,而不是A在连。

技术分享

    (二)远程端口转发   

技术分享

 

此时的环境和本地端口转发环境差不多,只不过此时A作为了ssh服务器,而B作为了客户端。具体步骤如下:

1、在客户端B操作:ssh -R 9527:192.168.206.147:25 -fN 192.168.206.146

2、在服务器A上查看端口连接情况。

技术分享

执行telnet 127.0.0.1 9527,让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23

此时已经连接上了C。

技术分享

3、在C上查看端口连接情况:

技术分享

    (三)动态端口转发

技术分享

       

    现在模拟一个环境:centos6作为ssh客户端,rhel5作为ssh服务器,ssh客户端是可以访问ssh服务器的,并且ssh服务器也能访问谷歌网站,但是由于防火墙的原因,ssh客户端不能直接访问谷歌网站,但是可以通过ssh服务器来间接的连接到网站。这里我们选择1080作为本地端口,其实在这里 SSH 是创建了一个 SOCKS 代理服务,然后在ssh客户端输入以下命令即可实现:ssh -D 1080 [email protected]。其中192.168.206.145即为ssh服务器(rhel5)的ip,最后直接在浏览器或 MSN 上设置即可。在 SSH Client 端无法访问的网站现在也都可以正常浏览。而这里需要值得注意的是,此时 SSH 所包护的范围只包括从浏览器端(SSH Client 端)到 SSH Server 端的连接,并不包含从SSH Server 端 到目标网站的连接。如果后半截连接的安全不能得到充分的保证的话,这种方式仍不是合适的解决方案。

至此,我们已经完成了本地端口转发,远程端口转发,动态端口转发。回顾起来,总的思路是通过将 TCP 连接转发到 SSH 通道上以解决数据加密以及突破防火墙的种种限制。对一些已知端口号的应用,例如 Telnet/LDAP/SMTP,我们可以使用本地端口转发或者远程端口转发来达到目的。动态端口转发则可以实现 SOCKS 代理从而加密以及突破防火墙对 Web 浏览的限制。虽然每一部分我们都只是简单的介绍了一下,但如果能灵活应用这些技巧,相信对我们的日常生活 / 工作也是会有所帮助的。



以上是关于SSH端口转发的主要内容,如果未能解决你的问题,请参考以下文章

SSH -R 远程端口转发

SSH 内网端口转发实战

SSH端口转发

ssh动态端口转发

SSH高级功能 - 远程端口转发

安全牛学习笔记SSH远程端口转发和动态端口转发以及X协议转发