SSH가이 호스트 이름을 해석하지 않는 이유는 무엇입니까? 라는 네트워크의 호스트에 SSH를 시도 storage하면

라는 네트워크의 호스트에 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수 없습니까?



답변

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다음 구현 경로를 따라 가고 그 위치가 어디인지 확인해야합니다.


답변