Linux

你可以有多個 ~/.ssh/config 文件嗎?

  • November 7, 2020

我們有一個堡壘伺服器,用於連接到多個主機,我們的 .ssh/config 已經增長到超過一千行(我們連接到數百個主機)。這開始變得有點笨拙,我想知道是否有辦法將 .ssh/config 文件分成多個文件。理想情況下,我們會在某個地方指定其他文件將被視為 .ssh/config 文件,可能像:

~/.ssh/config
 ~/.ssh/config_1
 ~/.ssh/config_2
 ~/.ssh/config_3
 ...

我已經閱讀了關於 ssh/config 的文件,但我認為這是不可能的。但也許其他人遇到了類似的問題並找到了解決方案。

~/.ssh/config文件沒有包含其他文件的指令,可能與 SSH 檢查文件權限有關。

圍繞這一點的建議可以包括一個腳本,用於在系統上或通過儲存庫上的簽入掛鉤將多個更改集中在一起。人們還可以研究諸如 Puppet 或 Augeas 之類的工具。

但是,無論您如何處理它,您都必須將各個文件連接為來自文件外部的單個文件。

$ cat ~/.ssh/config_* >> ~/.ssh/config

注意: 覆蓋:> vs追加:>>

2017 年 12 月更新:

從 7.3p1 及更高版本開始,有包含選項。它允許您包含配置文件。

Include
   Include the specified configuration file(s).  Mul‐
   tiple pathnames may be specified and each pathname
   may contain glob(3) wildcards and, for user config‐
   urations, shell-like “~” references to user home
   directories.  Files without absolute paths are
   assumed to be in ~/.ssh if included in a user con‐
   figuration file or /etc/ssh if included from the
   system configuration file.  Include directive may
   appear inside a Match or Host block to perform con‐
   ditional inclusion.

引用自:https://serverfault.com/questions/375525