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
。
ブロックはファイルの次または終わりで終了しますMatch
。Match
Host
これは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