#分享 我們都用過 SSH,但你有用過 ControlMaster 嗎?

1月24日 12:14
SSH (Secure Shell) 是我們都很熟悉的一個指令 但不知道各位有沒有研究過一些 OpenSSH Client 的功能呢? 今天跟各位介紹的就是其中一個共享 Connection 的功能 "Control Master" Control Master 的官方說明是 `Enables the sharing of multiple sessions over a single network connection.` 提供給我們利用同一條 connection 執行多個 session 的能力 在我們可能有 batch 執行 remote command 的情況效果可說是相當顯著 也不是什麼特別複雜的功能,這邊就只簡單說明一下操作方式 幾個關鍵的 flag -M 開啟 ssh master 模式 (只有 master 要指定) (特別注意,一個 M 的話建立新的 session 是不用重新認證的,兩個 M 以上的話每個新 session 建立都會再一次驗證) -o ControlPath=<PATH> 用來指定 control socket 的位置 (必填) -o ControlPersist=<yes | no> 用來指定 master connection 會不會在背景執行,當設定為 yes 時,即使離開了 session,connection 仍會保留,必須用下面的指定來控制他退出 -O 後面可以搭配 "check", "forward", "cancel", "exit", "stop" 五種指令,分別會對 master 做以下動作 - check 檢查 master 執行狀態 - forward 照描述應該是指像是 port-forward 之類的東西?(沒嘗試過 (request forwardings without command execution) - cancel 照描述應該是取消 forward,算是抵銷上面的命令 - exit 讓 master 離開 - stop 不中斷 master 的連線,但不會再接受新的連線 要使用 Control Master 這個功能大致上就是以上的幾個 flag 實際指令可能會長得像這樣 啟動 master ssh -M -o ControlPath=~/.ssh/example example.com 新的 session ssh -o ControlPath=~/.ssh/example example.com 確認連線狀態 ssh -O check -o ControlPath=~/.ssh/example example.com 大概是這樣,有興趣的人可以玩玩看 這篇算是隨手亂寫的筆記 看到這邊的讀者真的非常感謝 <(_ _)>
23
回應 9
文章資訊
11 篇文章26 人追蹤
Logo
每週有 30 則貼文
共 9 則留言
國立臺灣師範大學
雪莉? 哇!珍妮佛羅培茲! 咳...咳... 那是 Coin Master
B1 你大老遠來留言就因為我攻擊了你的村莊?(X
國立清華大學
太酷ㄌ吧 不愧是 YC大神
太厲害了吧大神
國立臺灣大學
大神 <(_ _)>
元智大學
感覺tmux能勝任差不多的任務?
B6 tmux 跟 control master 的用途不同 tmux 是實際上在 remote 上面有多個 session 而 control master 是在 local 上多個 session 共用同個 connection 主要的目的差異是 tmux 針對使用者多功 而 control master 則可以針對自動化任務處理(像是 ansible 就是使用這個)
元智大學
B7 所以local端斷網task也不會中斷?
B8 tmux 在 local 斷網 task 是不會停的 control master 會,control master 只有單純共享 connection