SSH转发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH转发相关的知识,希望对你有一定的参考价值。
前言
前面介绍了ssh的两种连接方式,是在学习过程中连接主机的方式。在实际生产场景中,环境可能更加复杂。这里再介绍2种在实际工作中如何安全的访问想要访问的主机。
SSH端口转发
SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH 的连接,也能够通过将TCP 端口转发来使用SSH 进行通讯。
SSH 端口转发能够提供两大功能:
1、加密SSH Client 端至SSH Server 端之间的通讯数据
2、突破防火墙的限制完成一些之前无法建立的TCP 连接
ssh转发的实际应用
假如你在一家公司做运维,你在家的时候或者分公司同事、其他部门的人想连接公司内部的一台主机,这时防火墙是阻止不允许访问。甚至有些严格的公司VPN都是不允许开启的。防火墙是专门的网络运维管理员管理,不可能因为某一个人的小需求更改策略。那这时怎么办呢?企业内部有一台ssh服务器,因为ssh是加密的,外部直接连接ssh服务是可以的。现在可以通过ssh server当跳板机,间接的去连接其他主机。如下图:A是外部一台主机,想连接C,直接连是被防火墙拒绝的。B是ssh服务器,B是可以直接连C的。A可以通过与B搭一个“隧道”,B来转发A的请求到C。情形具体参考下图。
第一步:模拟A无法连接C
C机器:iptables -A INPUT -s 192.168.32.101 -j REJECT <===拒绝来自A机器的连接
第二步:确认B机器上开启可ssh服务,可以用/etc/init.d/sshd status 查看下状态,如果没开用start开启。也可以ss -ntl看下22端口是否开启,ssh是在22端口提供服务的。
第三步:在A机器上建立隧道ssh -L 9527:192.168.32.103:23 -fN 192.168.32.102
说明:-L 9527:192.168.103:23 <===指定本机的9527端口,后面接想要连接的主机地址加服务端口
-f <===后台启用,不后台运行直接就连接上去了。
-N <===不打开远程shell,处于等待状态
192.168.32.102 <===跳板机B的ip地址
第四步:在A上直接telnet 127.0.0.1 9527 <===当访问本机的9527的端口时,被加密后转发到ssh server(B)的ssh服务,再解密被转发到telnet server(C)的23端口
总结:因为这是在本地执行操作的,也可以称作为ssh的本地转发。这么做虽然加密了,但是在防火墙上依然对22端口没有限制,外部机器可以通过tcp:22端口访问内部。所以很多企业是不允许打开22端口的。那假如22端口也被防火墙屏蔽了怎么办呢?既然有本地转发,肯定有远程转发啦!
ssh远程转发:与上面的架构一样,只是ssh server和ssh client发生变化。A和B互相调换位置。如下图:这次我们换一个不安全的邮件smtp服务。
第一步:由于这次我们模拟的是SMTP服务,需要实现修改一下smtp的配置:
vim /etc/postfix/main.cf <===配置文件
inet_interfaces = all <===取消#,使这行生效
#inet_interfaces = localhost <===注销此行
重启服务:service postfix restart
第二步:在B上操作:ssh -R 9527:192.168.32.103:25 -Nf 192.168.32.101 <===远程是-R,其余选项参考上面
第三步:在A上telnet 127.0.0.1 9527连接成功!
总结:远程转发相比较本地转发来说,比较安全。不管防火墙屏蔽了任何端口,都不影响,不涉及外部机器对防火墙主动发起请求。A连接的C的telnet实际已经被B上的ssh进行封装。所以也是安全的。
ssh转发补充:
其实ssh还有一种转发模式,就是动态转发。应用比较多的就是我们说的科学上网。
在本机上执行ssh -D 1080 192.168.32.102 <===-D 本机的1080端口做为代理服务器,后面是代理服务器的IP地址。
*curl --socks5 127.0.0.1 http://192.168.32.103 <===测试连接103的网站能否打开,使用浏览器需要设置一下代理。
访问外网有风险,建议大家还是不要过多的科学上网。
以上是关于SSH转发的主要内容,如果未能解决你的问题,请参考以下文章