SSH設定エラーを無視できますか?

SSH設定エラーを無視できますか?

DockerコンテナでUbuntuイメージを実行し、デフォルトのMacOS環境で.sshディレクトリをマウントしています。

私の.ssh/configファイルには次のものが含まれています。

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519_common

これはMacではうまく機能しますが、AddKeysToAgentとUseKeychainはLinuxに影響を与えず、openssh-clientパッケージ(gitなど)を使用するすべての項目は認識できないディレクティブを無視するだけでなく、失敗して終了します。

MacとLinuxの間で.ssh / configファイルを共有する方法はありますか?

答え1

Matchキーワードを使用できます。SSH構成特定の条件でのみ適用されるように構成の一部を制限するファイル。質問から抜粋した内容は、次のように機能します。

Host *
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_ed25519_common

Match exec "uname -s | grep Darwin"
    UseKeychain yes

Linuxシステムではgrep失敗(1)が返されるため、Macホストでは次の行が無視され、grepは成功(0)を返し、その行が適用されますUseKeychain yes

ブロックはファイルの次または終わりで終了しますMatchMatchHost

これはAddKeysToAgentプラットフォームによって異なりますが、バージョン7.2以降、OpenSSHで使用できるため、Ubuntuコンテナでは以前のバージョンのOpenSSHを使用していますが、Macホストでは使用できない可能性があります。

答え2

IgnoreUnknown以下でできるだけ早くこれを行う必要があります~/.ssh/config

IgnoreUnknown   UseKeychain,AddKeysToAgent

ssh_config(5)マンページから:

IgnoreUnknown

構成の解析時に無視する不明なオプションを指定するパターンのリスト。ssh_config認識できないオプションが含まれている場合は、エラーを抑制するために使用できますssh(1)IgnoreUnknown前に表示される未知のオプションには適用されないため、できるだけ早く設定ファイルに一覧表示することをお勧めします。


テストできるすべてのバージョンでは、openssh失敗Match条件は次のとおりです。いいえ次のガイドラインに従って不明なエラーを避けてくださいssh

$ cat ~/.ssh/config
Match !all
        Foobar yes
$ ssh localhost
/home2/ahq/.ssh/config: line 2: Bad configuration option: foobar
/home2/ahq/.ssh/config: terminating, 1 bad configuration options

関連情報