라는 네트워크의 호스트에 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
host
IP를 찾을 수는 있지만 어떻게 찾을 ssh
수 없습니까?
답변
ssh
및 host
해결 이름은 그래서 그들이 해결에 이름이 FQDN하지 특히, 때로는 서로 다른 결과를 얻을 것은 놀라운 일이 아니다, 완전히 다른 경로를 다음 (어디서나 사용의 FQDN에 따라서 제안.)
OS와 시스템 구성에 대해서는 언급하지 않았으므로 Linux를 염두에두고 일반적인 상태를 유지해야합니다 .MacOS 세부 사항은 다소 다르고 Windows는 훨씬 다르지만 일반적인 개념은 동일합니다.
-
host
DNS를 쿼리하므로 기본적으로 DNS를 검색하고 여기에/etc/resolv.conf
나열된 서버를 쿼리하여 호스트 이름이 아직 정규화되지 않은 경우 도메인 이름을 연결할 수 있습니다. 가능한 모든 다른 소스를 무시하지만 요즘 많은 시스템에서 다른 DNS 서버를 쿼리하기 전에dnsmasq
읽고/etc/hosts
다른 소스 를 읽는 로컬 캐싱 DNS 서버 (일반적으로 )를host
실행하므로 로컬 서버에 대한 쿼리가 발생 하면 그 결과가/etc/hosts
발생할 수 있습니다. -
ssh
자체 경로를 따릅니다. 나는openssh
리눅스에서 무엇을하는지 설명 할 것이고 , 다른 구현들은 다르다. 먼저 구성 파일 (시스템 전체 및 사용자 별)에 정의 된 호스트 별명을 찾은 다음의 지시문에 지정된 순서대로 다른 소스를 검색합니다 . 다음과 같이 말하십시오./etc/ssh/ssh_config
~/.ssh/config
hosts:
/etc/nsswitch.conf
hosts: files dns
즉
/etc/hosts
, DNS를 찾아서 쿼리합니다 (/etc/resolv.conf
다시). 다른 가능한 소스가 사용되지 않습니다nis
및netinfo
서비스, LDAP, Active Directory를, 당신은 그 이름을 지정합니다.
특정 사례를 디버깅하려면 ssh
다음 구현 경로를 따라 가고 그 위치가 어디인지 확인해야합니다.