SSH 구성 오류를 무시할 수 있나요?

SSH 구성 오류를 무시할 수 있나요?

Docker 컨테이너에서 우분투 이미지를 실행하고 기본 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.MatchHost

이는 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

관련 정보