经过堡垒机透明链接到云中任意内网主机

经过堡垒机透明链接到云中任意内网主机,且自由切换到其余主机。web

适合于各类公有云环境。bash

前置条件

你的SSH证书在每一台主机上都有相同的帐户名以及控制台登陆受权。服务器

这一点其实不怎么容易,比较可行的方法有:ssh

  • 经过自定义镜像预先作好帐户名,并用该镜像开机
  • 经过一套ops脚本集,在每台主机上执行一次特定子功能以便创建相同的帐户名以及受权
  • 经过 Ansible/Puppet 或相似的部署工具,执行专用脚本以便创建帐户名

关于前置条件的实现,不在本文的讨论范畴,所以这里再也不展开细节了。工具

本机

你的工做主机须要有一点准备:请修改 ~/.bashrc 追加以下语句:ui

ssh -add -K ~/.ssh/id_rsa
alias ssh='ssh -A'
# 从新登陆到终端,或者就地应用变动:
. ~/.bashrc
复制代码

以上咱们假定你的主力 SSH 证书就是当前帐户的缺省证书,不然你须要指定正确的证书路径。spa

上面的语句将会在 SSH 会话中携带你的证书到任意位置,固然你也并没必要担忧证书的泄露问题,你的证书只会存在在内存中。code

堡垒机

假定前置条件是知足的,例如已经在某个新的 VPC 中准备好了自定义镜像,而且新开第一台主机做为堡垒机,而且主机名命名为 cx1ops00,那么cdn

ssh cx1ops00
复制代码

应该能顺利登陆到该主机。blog

堡垒机须要开启SSH转发,能够修改堡垒机的 /etc/ssh/ssh_config 加入:

Host cc*
    ForwardAgent yes
复制代码

也能够创建 ~/.ssh/config 加入该配置。

其它内网主机

你能够继续开其它主机,这些主机都命名为 cc1xxxxxx,注意每台主机的主机名和IP地址须要被写入堡垒机的 /etc/hosts 文件中,或者是写入到内网 DNS 服务器中。通常来讲,咱们经过新建主机时的用户自定义启动脚原本完成该工做。

回到本机

咱们如今须要完成通配符配置,修改 ~/.ssh/config 加入以下的配置文本:

Host cc*
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/qcloud/tencent-cloud-newEcsDefault.dms
    ProxyCommand ssh cx1ops00 exec nc %h %p
复制代码

同样的道理,证书文件的路径你本身修正正确。

经过上面的通配符配置,咱们约定凡是ssh到云主机名 cc* 的,一概借助堡垒机 cx1ops00 转发到云端,至于确切的云主机名的正确解释,则交到堡垒机上去完成。所以,如今在本机上经过 ssh cc1web01 能够直接链接到云上的内网主机了。

经过堡垒机的链接,有一张图,暂时没有寻找到原始来源:

后记

上面的方法,是用在我工做中的方法。DevOps 中 Ops 的基础的基础,就是如何便利地在各主机中巡航。

相关文章
相关标签/搜索