ssh_config에 여러 "호스트*"가 있습니까?

ssh_config에 여러 "호스트*"가 있습니까?

~/.ssh/config 작동 방식에 대해 내가 이해한 바는 각 "호스트" 줄이 구성 파일의 해당 지점 이후에 일치하는 모든 호스트에 대해 적용된다는 것입니다.

연결해야 하는 개인 및 업무 서버가 많이 있습니다. 나는 다음과 같은 일을하려고합니다 :

# 일반 설정
컨트롤 마스터 카
ControlPath ~/.ssh/controlmaster/%r@%h:%p
순방향 프록시는
ForwardX11은
GSSAPI 인증 아니요
공개키 인증은

# 개인서버
주인 *
사용자harleypig
ID 파일 ~/.ssh/personal_id_rsa

호스트 호스트 1
호스트 이름host1.com

호스트 호스트 2
호스트 이름host2.com

# 작동 중인 서버
주인 *
사용자 alan.young
ID 파일 ~/.ssh/work_id_rsa

호스트 작품 1
호스트 이름 work1.companyserver.com

호스트 작업 2
호스트 이름 work2.companyserver.com

주인 *
사용자디바이저

호스트 개발 1
호스트 이름 dev1.companyserver.com

호스트 개발 2
호스트 이름 dev2.companyserver.com

문서에는 host1과 host2가 "personal_id_rsa" 및 사용자 harleypig를 사용해야 함을 나타내는 것 같습니다. work1, work2, dev1 및 dev2는 "work_id_rsa"를 사용해야 하며, 처음 두 개는 사용자 "alan.young"이어야 하고, dev1 및 dev2는 "devuser" 사용자여야 합니다.

그러나 이것은 일어나지 않았습니다. 내가 먼저 입력한 "호스트*"는 다음 호스트가 모두 연결을 시도하는 호스트입니다. 제가 뭔가 잘못 이해했거나 놓쳤나요?

답변1

~에서ssh_config수동:

각 매개변수에서 처음 얻은 값을 사용하므로 파일 시작 부분에 더 많은 호스트별 선언을 제공하고 끝 부분에 일반 기본값을 제공해야 합니다.

따라서 귀하의 예에서는 모든 호스트가 User harleypig및를 사용합니다 IdentityFile ~/.ssh/personal_id_rsa.

와일드카드가 포함된 지시문을 Host대체 항목으로 처리합니다. 다음 설정이 설정되지 않은 경우에만 사용됩니다. 다음과 같이 작성해야 합니다.

Host host1
Hostname host1.com
Host host2
Hostname host2.com
Host host*
User harleypig
IdentityFile ~/.ssh/personal_id_rsa

Host지정된 호스트 별칭 집합을 와일드카드로 일치시킬 수 없는 경우 여러 패턴을 한 줄에 입력할 수 있습니다(예: ) Host host* more* outlier.

답변2

당신이 뭔가 잘못하고 있는 게 틀림없어요.

  • Host *항상 이 항목을 마지막 항목으로 만들어야 합니다 .
  • Host *여러 항목을 가질 수 없습니다

작업 컴퓨터에 작업 컴퓨터에만 일반화할 수 있는 이름 형식(예: machine1.work.com, host.work.com, fileserver.work.com)이 있는 경우 작업 컴퓨터를 다음과 같이 대상으로 지정할 수 있습니다.

Host *.work.com
User alan.young
IdentityFile ~/.ssh/work_id_rsa

개인용 컴퓨터에도 동일하게 적용됩니다.

관련 정보