SSH가 /etc/hosts를 쿼리하지 않는 이유는 무엇입니까?

SSH가 /etc/hosts를 쿼리하지 않는 이유는 무엇입니까?

저는 NIS를 통해 사용자를 인증하는 네트워크 환경을 관리하고 있습니다. 하나의 머신을 제외한 모든 머신을 SSH를 통해 서버에 연결하는 데 사용할 수 있습니다. 문제의 컴퓨터에서 메시지가 나타납니다.

ssh: connect to host servername port 22: Connection refused

strace문제가 있는 컴퓨터의 출력을 서버에 올바르게 SSH로 연결할 수 있는 컴퓨터와 비교했습니다 .
서버에 SSH로 연결할 수 없는 컴퓨터는 협상하지 않는 /etc/hosts반면 SSH를 통해 올바르게 연결할 수 있는 컴퓨터는 협상하는 것으로 나타났습니다. 두 시스템 모두 /etc/hosts서버 이름과 IP로 설정됩니다. 마지막으로, 문의하지 않은 머신은 /etc/hosts결국 127.0.0.1(localhost)에 연결을 시도하고 위의 메시지와 함께 실패합니다. 원인은 무엇일까요?

추가 정보:

  • SSH를 통해 액세스하려는 서버도 이름 서버 역할을 하며, 두 컴퓨터 모두 SSH를 통해 액세스하려고 할 때 해당 서버를 참조합니다.
  • 이렇게 하면 서버에 SSH로 연결할 수 없는 컴퓨터가 다른 컴퓨터에 올바르게 SSH로 연결할 수 있습니다.
    ssh machinename
    로그에는 strace컴퓨터가 이름 서버를 참조하고(이번에는 성공적으로) 원격 컴퓨터 이름을 성공적으로 확인하고 연결한 것으로 표시됩니다.

편집: 이 문제를 해결하는 데 도움이 될 수 있다고 생각되는 추가 정보를 기꺼이 제공해 드리겠습니다.

답변1

제가 보기에는 문제 호스트가 올바르게 구성되지 않은 것 같습니다 nsswitch.conf.

hosts줄은 /etc/nsswitch.conf다음과 같아야 합니다.

hosts:  files nisplus nis dns

그러나 구체적인 내용은 환경에 따라 달라집니다. 작업 호스트와 비교하고 그에 따라 변경해야 합니다.

관련 정보