合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
在工作中,经常需要对公网云主机上运行的一系列服务进行维护,为了安全起见,通常对外开放的端口只有SSH(22端口)服务,虽然可以在运维的时候临时通过改变安全策略放行其它服务端口,但对于耗时较长的排查操作,长时间暴露敏感端口存在较大的安全风险。而通过SSH隧道技术,不用改变任何安全策略便可以将云主机中的服务端口映射到本地进行操作,不仅能够保证传输数据处于加密状态,而且可以在本地通过工具或浏览器访问目标服务,既方便又安全。
SSH隧道技术在本文中的应用场景图如下:
图片
要成功建立SSH隧道,需要满足以下几个前提条件:
SSH隧道主要从个人电脑开始建立,根据上图可知,SSH隧道建立过程如下:
上面建立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密码才能最终完成隧道连接。
如果命令执行失败,可以先看看本地有没有出现端口占用的情况,如图:
图片
如果命令执行返回了进程ID,说明本地转发端口5478被该进程占用了,要么kill 进程ID,要么更换其它端口。
成功执行命令后,可以查看ssh的后台进程,发现该进程说明隧道建立成功,如图:
图片
在本地通过数据库软件连接5478端口试试,可以看到已成功连接远程数据库,如图:
图片
TOP