解決策 1:
~/.ssh/config
ファイルには、他のファイルを含めるためのディレクティブがありません。これは、SSH のファイル アクセス許可のチェックに関連している可能性があります。
これに関する提案には、システム上またはリポジトリのチェックイン フックを介して複数の変更をまとめるスクリプトを含めることができます。 Puppet や Augeas などのツールを検討することもできます。
ただし、どのようにアプローチしても、ファイルの外部から個々のファイルを連結して 1 つのファイルにする必要があります。
$ cat ~/.ssh/config_* >> ~/.ssh/config
注: 上書き:>
対 追加:>>
2017 年 12 月の更新:
7.3p1 以降には、Include オプションがあります。これにより、構成ファイルを含めることができます。
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.
解決策 2:
次のように、ssh オプションで使用する現在の構成ファイルを指定できます:
ssh -F /path/to/configfile
それが唯一の方法のようです.
また、1 つの構成を別の構成に含める方法もありません。
解決策 3:
ssh 7.3 (2016 年 8 月 1 日にリリース) 以降、Include
ディレクティブが利用可能です。
含む :指定された構成ファイルを含めます。複数のパス名を指定でき、各パス名にはグロブワイルドカードとユーザーのホームディレクトリへのシェルのような「~」参照を含めることができます。絶対パスのないファイルは ~/.ssh
にあると想定されます . Include
ディレクティブは Match
内に表示される場合があります または Host
ブロックして条件付き包含を実行します。
(パッチを含む解決済みのバグ レポートへのリンクは次のとおりです:https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24)
解決策 4:
私は個人的にこれらのコマンドを使用して ssh 構成をコンパイルします:
alias compile-ssh-config='echo -n > ~/.ssh/config && cat ~/.ssh/*.config > ~/.ssh/config'
alias ssh='compile-ssh-config && ssh'
# (This will get used by other programs depending on the ~/.ssh/config)
# (If you need you can run the compile-ssh-config command via cron etc.)
または:
alias compile-ssh-config='echo -n > ~/.ssh/config-compilation && cat ~/.ssh/*.config > ~/.ssh/config-compilation'
alias ssh='compile-ssh-config && ssh -F ~/.ssh/config-compilation'
# (This is saver and won't over write an existing ~/.ssh/config file)
理由:
alias ssh='ssh -F <(cat .ssh/*.config)'
戻ります:
ssh: Can't open user config file /dev/fd/63: Bad file descriptor
これがお役に立てば幸いです。
解決策 5:
cat config_* > config
も使用します 構成全体を生成します。しかし、puppet/cfengine などがまだ配置されていない場合は、これには使用しません (ところで:構成管理システムを使用しないのはなぜですか?)。
パッケージ (deb、rpm) を生成し、ローカル リポジトリに配置します。 postinst スクリプトでは、cat が構成を生成します。おそらく、ローカル フォルダーも含めるとよいでしょう...利点は、cron-apt &Co の実行中に、ssh/config の更新が毎日ベースでアクティブになることです。