ssh_config에 'Host *'가 여러 개 있습니까?


27

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

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

# 일반 설정
ControlMaster 자동
ControlPath ~/.ssh/controlmaster/%r@%h : % p
ForwardAgent 예
ForwardX11 예
GSSAPI 인증 번호
Pubkey 인증 예

# 개인 서버
호스트 *
사용자 할리 피그
IdentityFile ~ / .ssh / personal_id_rsa

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

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

# 작업 서버
호스트 *
사용자 alan.young
IdentityFile ~ / .ssh / work_id_rsa

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

호스트 워크 2
호스트 이름 work2.companyserver.com

호스트 *
사용자 개발자

호스트 dev1
호스트 이름 dev1.companyserver.com

호스트 dev2
호스트 이름 dev2.companyserver.com

문서는 host1과 host2가 'personal_id_rsa'와 사용자 harleypig를 사용해야 함을 나타냅니다. work1, work2, dev1 및 dev2는 'work_id_rsa'를 사용해야하고 처음 두 개는 사용자 'alan.young'이고 dev1과 dev2는 사용자 'devuser'여야합니다.

그러나 이것은 일어나지 않습니다. 'Host *'가 무엇이든간에 다음 호스트 모두가 연결하려고합니다. 내가 오해하거나 무언가를 놓치고 있습니까?


감사합니다.이 두 답변 사이에서 연결을 작동시킬 수있었습니다.
harleypig

답변:


36

로부터 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.


15

당신은 분명히 잘못하고 있습니다.

  • 항상 Host *마지막 항목으로 입력 해야합니다 .
  • 여러 Host *항목을 가질 수 없습니다

작업 시스템의 이름 형식이 작업 시스템을 대상으로 일반화 할 수있는 경우 (예 : machine1.work.com, host.work.com, fileserver.work.com) 다음과 같이 작업 시스템을 대상으로 지정할 수 있습니다.

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

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


나에게 Host *파일의 시작 부분에 넣는 것이 잘 작동하는 것 같습니다. 와일드 카드를 사용한다는 것이 우선 순위를 지정할 때 첫 번째 항목이라는 사실보다 우선합니다.
Zaz

Btw Host *.work.com는 잘못된 구문입니다. 그것은 단지 주변에 다른 방식으로 작동합니다 :Host myserver*
다니엘 안드레이 Mincă에게

3
@ MincăDanielAndrei 그것은 두 가지 방식으로 작동합니다. 와일드 카드 표현이므로 다른 와일드 카드로 사용할 수 있습니다. 호스트 git-codecommit. *. amazonaws.com 이것은 ~ / .ssh / config의 실제 예제입니다.
Hameedullah Khan

@HameedullahKhan 심각하게, 나는 그것을 시도했지만 응답하지 않습니다. 그렇게 Host *subdomain.com하면 응답하지 않을 것입니다.
Daniel Andrei Mincă

1
@ MincăDanielAndrei 그 동작은 설명서 페이지에 설명되어 있습니다. 작동하지 않으면 버그입니다.
goetzc 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.