節省你的SSH連接時間:ControlMaster 使用指南
背景
最近有需求在遠程服務器上頻繁傳輸文件(scp),然后執行一些命令。但是這個遠程服務器延遲比較高,而且認證花費的時間比較長,讓人非常不耐煩。然后發現了一個可以加快這個步驟的工具:ControlMaster。
來源:
簡介
ControlMaster 是 OpenSSH 提供的一個功能,其作用是讓多個 SSH 會話共享一個 TCP 連接,這樣做有幾個好處:
- 減少連接時間:后續的SSH連接可以復用已經建立的連接。
- 減少服務端負載:因為減少了需要處理的TCP連接數量。不過個人感覺這個作用不是很大。
- 減少認證次數:只有第一次連接的時候需要認證。這種方式對于只允許密碼登錄的服務端來說非常有效。對于采用密鑰的服務器來說,如果認證時間很長,節省的時間也會相當可觀。
這個功能尤其適合需要頻繁進行SSH連接的時候,比如說
- 腳本自動化:腳本中可能經常出現類似
ssh user@host command的命令,而允許復用連接的話,效率會大大提高。當然,基于 ssh 的其他工具也是適用的,比如說 scp,sftp,也包括基于 ssh 的 git 操作(主要涉及 clone,push,pull,fetch)。 - 網絡質量不佳:當網絡質量不佳的時候,即使不那么頻繁的 ssh 操作,這個功能也可以節省很多時間。當然主要不是時間,畢竟加起來可能也不到一分鐘,最主要是等待的過程太煩人了。你也不想每次打開網頁,頁面都要保持幾秒鐘的空白吧?
使用方法
文檔地址:https://man.openbsd.org/ssh_config#ControlMaster
打開ssh客戶端的配置文件,通常是 ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p
ControlPersist 1h
注:
- 這里的
*表示對所有主機生效,也可以單獨設置。 - auto 是推薦設置,一般用這個就夠了。
- Path: 指明連接文件的保存位置。名稱推薦至少包含
%r,%h,%p以保證唯一,或者使用%C。%r: remote username%h: remote hostname%p: remote port%C: Hash of %l%h%p%r%j- 詳情請看文檔:https://man.openbsd.org/ssh_config#TOKENS
- Time: 沒有后綴就是秒。例子:
- 600: 600 seconds
- 10m: 10 minutes
- 1h30m: 1 hour 30 minutes
- 詳情請看文檔:https://man.openbsd.org/sshd_config.5#TIME_FORMATS
其他資源:https://docs.rc.fas.harvard.edu/kb/using-ssh-controlmaster-for-single-sign-on/

浙公網安備 33010602011771號