ssh 호스트 이름 요청 끝에 도메인을 추가하도록 우분투를 구성 할 수 있습니까?


9

나는 많은 서버를 가지고 있으며 모두 같은 servers.company.net으로 끝납니다. 예를 들어 vded-xx-001.servers.company.net, 그리고 vded-xx를 입력 할 수 있는지 궁금합니다. xx-001을 입력하고 servers.company.net을 자동으로 추가하도록 하시겠습니까?

그래서 입력하고 싶습니다

ssh user@vded-xx-001

실제로 연결되도록

ssh user@vded-xx-001.servers.company.net

DNS 검색 도메인을 / etc / network / interfaces에서 servers.company.net으로 설정하려고했지만 원하는 결과를 얻지 못했습니다.

누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

미리 감사드립니다


search company.net/etc/resolv.conf에 추가 할 수없는 이유가 있습니까?
Hennes

@Hennes resolv.conf에 search company.net 및 servers.company.net을 추가하는 것이 효과가있었습니다. 그러나 파일 맨 위에 변경 사항을 덮어 쓰 겠다는 경고가 있습니다.이 경우 어떻게 변경해야합니까?
Tim Lassie Freeborn

1
나는 그것에 응답하고 여분의 담당자를 갈망
Hennes

실제로 해당 질문에서 논의 된 내용과 달리 검색 도메인 목록을 /etc/network/interfaces( dns-search옵션 사용) 또는 NetworkManager 연결 구성 필드 에 포함시키는 것이 가장 좋습니다 Search domains.
jdthood

로컬 리졸버 구성을 망설이지 않고이 솔루션 은 더 간단하고 휴대 가능합니다.
OrangeDog

답변:


19

아마 당신은 이미 이것을 해결했지만 나중에 누군가에게 도움 resolv.conf이 될 수 있습니다 ~/.ssh/config.

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername

나중에 사용할 수 있습니다.

ssh vded-alotofstuff-001
ssh vded-somethingels-001
ssh test-02-something-fixed-somethingelse

이것이 정답입니다.
slm

이것은 문제를 해결하는 방법이지만 시스템 전체의 이름 확인 문제는 해결하지 않으며 ssh 호스트 이름의 문제 만 해결합니다. 저에게 가장 좋은 방법은 올바른 호스트 이름을 시스템 전체에 적용하고 특정 호스트 이름을 확인할 수 있도록 특정 서비스 (ssh)를 사용자 정의 할 필요가 없습니다.
Philippe Gachoud

1
이런 경우에 나는 잊고 당신이 단순히 첫번째 항목을 지정, 같은 설정을 공유하면서 모두 짧고 긴 이름을 허용 할 경우, 나중에 다시이를 찾아 Host vded-*.servers.company.net함께 Hostname %h. 그런 다음 User, IdentityFile 등과 같은 다른 모든 매개 변수와 Host vded-*함께 두 번째 항목 에서Hostname %h.servers.company.net
bksunday

6

이것이 가장 쉬운 해결책입니다. 모든 호스트에서 작동하며 루트 또는 DNS / 리졸버 시스템에 대한 액세스가 필요하지 않습니다.

~/.ssh/config파일 맨 위에 추가하거나 파일이 없으면 작성하십시오.

CanonicalizeHostname yes
CanonicalDomains servers.company.net

문서 ( man 5 ssh_config) :

CanonicalizeHostname

명시 적 호스트 이름 정규화 수행 여부를 제어합니다. 기본값 인 no 는 이름 재 작성을 수행하지 않으며 시스템 리졸버가 모든 호스트 이름 조회를 처리하도록합니다. yes 로 설정 하면 ProxyCommand를 사용하지 않는 연결의 경우 ssh는 CanonicalDomains 접미사 및 CanonicalizePermittedCNAMEs 규칙을 사용하여 명령 줄에 지정된 호스트 이름을 정규화하려고 시도합니다 . CanonicalizeHostnamealways 로 설정 되면 정규화 가 프록시 연결에도 적용됩니다.

이 옵션을 사용하면 새 대상 이름을 사용하여 구성 파일을 다시 처리하여 일치하는 호스트일치 스탠자 에서 새 구성을 선택합니다 .


그것은 나를 위해 가장 잘 작동합니다. CanonicalDomains를 추가 할 필요는 없으며 첫 번째 행만 추가하십시오. 이렇게하면 다른 네트워크에 연결해도 작동합니다.
Adam Wallner

2
그것은 @AdamWallner 당신은 추가하지 마십시오 CanonicalDomains다음 것입니다 현재 네트워크의 검색 도메인에서 작동합니다. 그렇게하면 (여러 개를 나열 할 수있는 경우) 연결할 수 있는 모든 네트워크 에서 해당 호스트 이름을 모두 확인할 수 있습니다.
OrangeDog

문서에서 알 수 있듯이 @ deed02392가 바로 그 일입니다.
OrangeDog

2

예, 이름이 지정된 구성 파일을 작성 ~/.ssh/config하고 다음 내용을 입력하여이를 수행 할 수 있습니다.

Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net

이제 이것을 입력하면됩니다 (더 이상 사용자 이름이 필요하지 않습니다).

$ ssh vded-xx-001

이것은 또한 명령 행 유틸리티와 함께 ​​작동합니다 scp:

$ scp filename vded-xx-001:/path/

1
나는 개별 호스트에 대해이 작동하지만 난 수백 것을 알고 나는 규칙을 만들 수 있습니다 기대했다 그 VDED-에 픽업 * 및 호스트 이름 host.servers.company.net 않습니다 다음에 대해
팀 래쉬 자유인으로 태어난

1
@TimLassieFreeborn : 구성 파일에 필요한 항목을 생성하는 스크립트를 작성할 수 있습니다. 그래도 동적으로 할 수 있는지 모르겠습니다.
Flimm

@TimLassieFreeborn 내 답변보기
OrangeDog

2

내 문제에 대한 해결책은 검색 도메인을 resolv.conf다음에 추가하는 것입니다 .

search servers.company.net

이것은 내가 들어갈 수있게했다

ssh user@vded-xx-001

내 서버 중 하나에 대해 올바른 주소에 연결합니다.

답변 해 주셔서 감사합니다 @Hennes


2
Ubuntu 12.04 이상을 실행한다고 가정하면 resolvconf 유틸리티가 해당 파일을 생성하므로 /etc/resolv.conf를 직접 편집하면 안됩니다. (실제로 /run/resolvconf/resolv.conf를 생성하여 /etc/resolv.conf가 기호 링크입니다.) 대신 인터페이스 구성자를 통해 ifup 또는 NetworkManager와 같은 DNS 설정을 구성해야합니다. Ifup : / etc / network / interfaces를 편집 dns-search servers.company.net하고 시스템 외부 네트워크 인터페이스의 스탠자에 행을 추가하십시오 . NM : 연결을 위해 IPv4 탭 servers.company.netSearch domains필드에 추가 합니다.
jdthood

머신 /etc/resolv.conf에서 심볼릭 링크가 아닌 경우 ../run/resolvconf/resolv.conf실행 sudo dpkg-reconfigure resolvconf하여 심볼릭 링크를 복원하십시오.
jdthood

1

SSH ID를 사용하고 있고 많은 서버에서 볼 가치가있는 경우 OrangeDog이 CanonicaliseHostname 및 CanonicaliseDomains를 설정하면 알려진 호스트의 @ cert-authority 항목과 일치 할 수 있습니다

known_hosts 항목 @ cert-authority * .example.com ssh-rsa AAAddadfkjaeio ...

Canonicalise 옵션이 없으면 "ssh host.example.com"을 사용해야합니다.

Canonicalise 옵션을 사용하면 "ssh myhost"가 일치합니다.

담당자가 허용하면 OrangeDogs 답변에 주석으로 이것을 추가했을 것입니다 ...


0

여러 프로그램에서 작동하는 빠른 솔루션을 위해 다음과 같은 줄을 포함하도록 vded-xx-001편집 하여 도메인 을 특정 IP 주소로 리디렉션하도록 설정할 수도 있습니다 /etc/hosts.

173.194.41.90  vded-xx-001

브라우저에서 작동합니다. http://vded-xx-001/

SSH와 같은 명령 줄 유틸리티와 함께 ​​:

$ ssh user@vded-xx-001

(개인적으로 SSH 구성 솔루션을 선호합니다 .)


0

시스템 전체 도메인 이름 확인을 위해 네트워크에서 한 번만 설정하고 싶습니다. 나는 DHCP 서버에서 설정 한 것 그래서 도메인 이름과 DNS 서버는 그래서 모든 컴퓨터에게 바로 제공하는 것이 resolv.conf포함을

  • 기본 DNS 서버 IP
  • 도메인
  • 검색 지시어

이것은 DHCP 서버와 원하는 네트워크 구성에 달려 있습니다 ... 나는 개인적으로 네트워크에 일반적 일 때 컴퓨터 사용자 지정 구성을 좋아하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.