회사 환경에서 사용자가 SSH를 통해 액세스할 수 있는 애플리케이션을 실행하고 있습니다. 이 애플리케이션은 기업 네트워크 내의 모든 사용자(예: 서버 사용자)가 SSH를 통해 액세스할 수 있습니다.
그러나 갑자기 회사 네트워크 외부의 다른 네트워크(필요한 방화벽 규칙이 마련되어 있음)의 사용자가 SSH를 통해 이 애플리케이션에 액세스할 수 없게 되었습니다. 외부 네트워크의 컴퓨터에서 서버의 포트 22에 텔넷 연결하는 데 성공했습니다. 그러나 회사 네트워크의 서버에 SSH 연결을 설정하려고 하면 "서버가 연결을 닫았습니다."라는 메시지가 나타납니다.
이 문제로 2주 동안 갇혀 있었습니다. 하지만 해결책을 찾지 못했습니다. 포트 22에 텔넷으로 연결할 수 있다는 것은 클라이언트와 서버가 아무런 제한 없이 SSH를 통해 성공적으로 통신할 수 있다는 의미입니까, 아니면 텔넷 기능이 클라이언트와 서버 간의 완전한 SSH 양방향 통신이 가능하다는 것을 의미하지 않습니까? 텔넷 외에 클라이언트와 서버 간의 SSH 연결이 작동하는지 테스트하는 방법이 있습니까?
답변1
먼저 클라이언트를 연결하십시오 ssh -vvv
(이렇게 하면 ssh가 수행하는 작업에 대한 일부 디버깅 정보가 출력됩니다). 이는 문제를 진단하는 데 도움이 될 수 있으며, 문제가 가장 잘 밝혀질 수 있는 부분입니다.
둘째, DNS가 올바른 호스트로 확인되는 SSH 서버에 연결하기 위해 호스트 이름을 사용하고 있는지 확인하십시오.
sshd를 사용하도록 설정할 수 있습니다TCP 래퍼. 에 항목을 추가해야 할 수도 있습니다 /etc/hosts.allow
.
서버에서 사용하는 인증 메커니즘에 따라 사용자가 올바른 메커니즘을 사용하지 않으면 허용되지 않습니다. (예를 들어 허용으로 설정
PubkeyAuthentication
하고 해당 사용자에 대한 공개 키를 설정하지 않으면 거부됩니다.)
이를 설정 PubkeyAuthentication
하고 클라이언트가 SSH v1을 사용하여 연결할 수 있습니다( RSAAuthentication
그게 전부입니다).
세 번째 sshd 자체에는 연결별 세부 정보에 대해 연결을 거부할 수 있는 여러 구성 설정(man 5 sshd_config)이 있습니다.
AllowUsers, DenyUsers, DenyGroups, AllowGroups, AuthorizedPrincipalsFile