![SSH가 /etc/hosts를 쿼리하지 않는 이유는 무엇입니까?](https://linux55.com/image/27489/SSH%EA%B0%80%20%2Fetc%2Fhosts%EB%A5%BC%20%EC%BF%BC%EB%A6%AC%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 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
그러나 구체적인 내용은 환경에 따라 달라집니다. 작업 호스트와 비교하고 그에 따라 변경해야 합니다.