利用SSH隧道突破云主机服务访问限制

1.摘要

在工作中,经常需要对公网云主机上运行的一系列服务进行维护,为了安全起见,通常对外开放的端口只有SSH(22端口)服务,虽然可以在运维的时候临时通过改变安全策略放行其它服务端口,但对于耗时较长的排查操作,长时间暴露敏感端口存在较大的安全风险。而通过SSH隧道技术,不用改变任何安全策略便可以将云主机中的服务端口映射到本地进行操作,不仅能够保证传输数据处于加密状态,而且可以在本地通过工具或浏览器访问目标服务,既方便又安全。

2.SSH隧道原理

SSH隧道技术在本文中的应用场景图如下:

%利用SSH隧道突破云主机服务访问限制-猿站网-插图图片

要成功建立SSH隧道,需要满足以下几个前提条件:

  • 个人电脑需要安装支持SSH协议的软件,Windows系统可能需要安装类似于Cygwin这样的软件。
  • 云主机防火墙安全策略必须放行22端口,也就是SSH协议使用的默认端口。
  • 云主机上同样需要安装支持SSH协议的软件包,要能保证能用SSH协议正常登录远程主机。

SSH隧道主要从个人电脑开始建立,根据上图可知,SSH隧道建立过程如下:

  • 在个人电脑中开放一个自定义端口,这里选择了5478端口,该端口没有特别要求,可以自己根据实际情况选择,不与其它端口冲突就行。5478端口可以看作是隧道的开端。
  • 输入远程主机的SSH登录账号和密码建立隧道远程连接,防火墙的22端口必须放行才能成功建立连接。这里的SSH远程登录可以看作是隧道的延伸,由个人电脑的5478端口出发,延伸到远程云主机的22端口。
  • 将远程主机的真实服务端口与本地隧道开端5478端口建立映射。映射关系可以看作是隧道的收尾工程,隧道从云主机的22端口连接后,需要将其与远程主机上的本地服务端口建立连接,假设本地服务有个3306的数据库服务, 这样最终就打通了个人电脑5478端口和3306端口的连接,实现从本地访问防火墙之后的云主机服务。

3. 实践应用

上面建立SSH隧道的过程,在个人电脑里可以使用SSH工具自带的命令完成,完整命令如下:

ssh  -CfNg  -L 5478:localhost:3306 root@xx.xx.177.122

这条命令参数含义如下:

-C: 表示压缩传输,可以提高传输速率。

-f: 将ssh传输转入后台执行,不会占用当前的shell

-N:建立静默连接,不会看到具体的会话

-g: 允许远程主机连接本地端口转发

-L: 本地端口转发

5478:localhost:3306 这个参数是建立端口映射关系,5478表示本地端口,localhost:3306表示远程主机的3306端口。

注意:这里一定要写localhost,不要写xx.xx.177.122,虽然localhost和xx.xx.177.122代表同一台远程机器。

root@xx.xx.177.122参数就是远程SSH登录的过程,需要输入SSH密码才能最终完成隧道连接。

如果命令执行失败,可以先看看本地有没有出现端口占用的情况,如图:

%利用SSH隧道突破云主机服务访问限制-1猿站网-插图图片

如果命令执行返回了进程ID,说明本地转发端口5478被该进程占用了,要么kill 进程ID,要么更换其它端口。

成功执行命令后,可以查看ssh的后台进程,发现该进程说明隧道建立成功,如图:

%利用SSH隧道突破云主机服务访问限制-2猿站网-插图图片

在本地通过数据库软件连接5478端口试试,可以看到已成功连接远程数据库,如图:

%利用SSH隧道突破云主机服务访问限制-3猿站网-插图图片

原文地址:https://mp.weixin.qq.com/s/CVi4rhA5MQupM9GqeusZLQ

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
无描述 zhzs

华为云RDS通过备份文件恢复到自建数据库(MySQL)

2024-3-14 19:09:26

无描述 zhzs

如何从0-1使用 Apache Arrow 构建新数据系统

2024-3-14 19:09:28

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索