經過堡壘機透明鏈接到雲中任意內網主機

經過堡壘機透明鏈接到雲中任意內網主機,且自由切換到其餘主機。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 的基礎的基礎,就是如何便利地在各主機中巡航。

相關文章
相關標籤/搜索