SSH가이 호스트 이름을 해석하지 않는 이유는 무엇입니까?


12

라는 네트워크의 호스트에 SSH를 시도 storage하면 DNS 확인 실패가 발생합니다.

$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known

하지만 호스트로 DNS를 쿼리하면 작동합니다.

$ host storage
storage has address 192.168.20.103

hostIP를 찾을 수는 있지만 어떻게 찾을 ssh수 없습니까?


14
어디서나 FQDN을 사용하는 습관을들이십시오. 이것이이 선을 따라 겪었던 첫 번째 문제라면 대단히 운이 좋을 것입니다. 이것들은 추적하기에 실제로 털이 많을 수 있으며, 마지막이 아닙니다. 힌트 storage는 다음과 같습니다 . 인터넷상에서 실시간 최상위 도메인입니다.
Michael Hampton

192.168.20.103으로 'ssh'할 수 있습니까?
IvanGoneKrazy

2
호스트 이름 192.168.20.103을 어디에서 정의 했습니까? / etc / hosts?
고아

3
FQDN을 입력하는 것은 고통입니다. 반면에 .ssh / config에서 "storage"를 "storage.mydomain.com"으로 별칭을 지정하면 정말 편리합니다.
pjc50

1
@ pjc50 입력 sto한 다음 Tab 키를 누릅니다.
Michael Hampton

답변:


28

sshhost해결 이름은 그래서 그들이 해결에 이름이 FQDN하지 특히, 때로는 서로 다른 결과를 얻을 것은 놀라운 일이 아니다, 완전히 다른 경로를 다음 (어디서나 사용의 FQDN에 따라서 제안.)

OS와 시스템 구성에 대해서는 언급하지 않았으므로 Linux를 염두에두고 일반적인 상태를 유지해야합니다 .MacOS 세부 사항은 다소 다르고 Windows는 훨씬 다르지만 일반적인 개념은 동일합니다.

  • hostDNS를 쿼리하므로 기본적으로 DNS를 검색하고 여기에 /etc/resolv.conf나열된 서버를 쿼리하여 호스트 이름이 아직 정규화되지 않은 경우 도메인 이름을 연결할 수 있습니다. 가능한 모든 다른 소스를 무시하지만 요즘 많은 시스템에서 다른 DNS 서버를 쿼리하기 전에 dnsmasq읽고 /etc/hosts다른 소스 를 읽는 로컬 캐싱 DNS 서버 (일반적으로 )를 host실행하므로 로컬 서버에 대한 쿼리가 발생 하면 그 결과가 /etc/hosts발생할 수 있습니다.

  • ssh자체 경로를 따릅니다. 나는 openssh리눅스에서 무엇을하는지 설명 할 것이고 , 다른 구현들은 다르다. 먼저 구성 파일 (시스템 전체 및 사용자 별)에 정의 된 호스트 별명을 찾은 다음의 지시문에 지정된 순서대로 다른 소스를 검색합니다 . 다음과 같이 말하십시오./etc/ssh/ssh_config~/.ssh/confighosts:/etc/nsswitch.conf

    hosts: files dns
    

    /etc/hosts, DNS를 찾아서 쿼리합니다 ( /etc/resolv.conf다시). 다른 가능한 소스가 사용되지 않습니다 nisnetinfo서비스, LDAP, Active Directory를, 당신은 그 이름을 지정합니다.

특정 사례를 디버깅하려면 ssh다음 구현 경로를 따라 가고 그 위치가 어디인지 확인해야합니다.


6
ltrace / strace는 ssh가 실제로 도메인을 해결하려고 시도하는 방법에 대한 힌트를 제공 할 수 있으며 명령 행 dns 도구는 아마도 얻을 수 있습니다.
rackandboneman

/etc/nsswitch.conf읽기 로 변경 하라는 귀하의 추천이 hosts: files dns저에게 효과적이었습니다. 흥미로운 참고 사항으로, 지난 몇 주 동안 Raspian Jessie와 함께 여러 개의 Raspberry Pis를 설정했으며 모두이 변경이 필요했습니다.
Patrick Tucci
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.