完全用 GNU/Linux 工作

20. 增進 SSH 使用效率 - ssh_config

SSH 可說是每台 GNU/Linux 必裝的服務之一,我們可以藉由它,在遠端進行一切的操作。為避免被怪客 (cracker) 入侵,會於提供該服務的機器加上限制,以提高安全性,例如:更改埠口 (Port)、限制 IP 登入或只使用金鑰登入 … 等。

隨著機器數量及限制增加的同時,使用上的繁瑣及不便也會隨之增加。這時,我們可事先設定各個主機,以便日後的使用。Windows 上的 PieTTY, Xshell 皆有此功能,而在 Linux 裡凍仁則習慣直接編修 openssh-client 的設定檔 $HOME/.ssh/config

基本使用

設定各個主機 (Host) 的 SSH 設定。

  1. $ vi ~/.ssh/config
  2. # - master
  3. Host master # 代號
  4. Hostname 192.168.11.24 # IP or Domain name
  5. Port 2222 # 指定埠口
  6. User jonny # 使用者名稱
  7. identityfile ~/.ssh/id_rsa_24 # 指定金鑰
  8. # - slave
  9. Host slave # 代號
  10. Hostname 192.168.11.25 # IP or Domain name
  11. Port 2223 # 指定埠口
  12. User jonny # 使用者名稱
  13. identityfile ~/.ssh/id_rsa_25 # 指定金鑰

使用 $HOME/.ssh/config 設定檔連接各主機。

  1. [ jonny@workstation ~ ]
  2. $ ssh slave
  3. [ jonny@slave ~ ]
  4. $ sftp master
  5. Connected to master.
  6. sftp>

進階使用

以下參數在較舊版的 openssh-server 可能不支援。

認證代理

當本機上的同一把金鑰曾在多台 Server 上註冊並啟用此設定,則可於多台 Server 上轉發,也就是可使用本機的金鑰登入第二層、第三層的 Server。

  1. ForwardAgent yes

壓縮頻寬

先藉由 CPU 壓縮後再進行傳輸,適用於效能較好的機器。

  1. Compression yes

減少重複連線的時間

  1. ControlMaster auto
  2. ControlPath /tmp/ssh-%r@%h:%p

延長連線時間

  1. ControlPersist 1h

取消連線加密

於區網、可信賴的網路環境及大量檔案傳輸之情境使用此參數可有效減少 CPU 負載以提升傳輸速度。

  1. Ciphers arcfour

更多詳細說明請參考 Manpage

  1. man ssh_config

資料來源