내 시스템에서는 루트 사용자에게 SSH 클라이언트 인증이 허용되지만 루트가 아닌 사용자에게만 SSH 클라이언트 인증을 허용하고 싶습니다. ssh를 루트로 비활성화하기 위해 으로 변경했지만 PermitRootLogin yes
이제 PermitRootLogin no
내 플랫폼에 ssh를 연결할 수 없습니다.
루트가 아닌 사용자에 대해서만 SSH 클라이언트 인증을 활성화하는 방법을 알려줄 수 있는 사람이 있습니까?
답변1
SSH 서버 구성은 /etc/ssh/sshd_config 파일에서 수행됩니다. 이 파일을 열고 다음을 확인해야 합니다.
1) 아래에 지침이 있나요?
AllowUsers ...
AllowGroups ...
DenyUsers ...
DenyGroups ...
그렇다면 자신처럼 연결할 수 있도록 변경해야 합니다.
2) 설명이 있습니까?
PasswordAuthentication no
존재하는 경우 SSH 인증은 암호화 키로만 수행할 수 있음을 의미합니다. 분명히 그렇지 않기 때문에 실제로 시스템에 SSH로 접속하는 것을 방지할 수 있습니다.
이것을 다음으로 변경하십시오.
PasswordAuthentication yes
이렇게 하면 이것이 문제에 대한 완전한 해결책인지 테스트할 수 있습니다. SSH가 자신에게도 적합하다는 확신이 들면 암호화 키를 직접 생성하고 PasswordAuthentication을 다시 끄십시오. 비밀번호 대신 키를 사용하여 인증하는 방법에 대한 유용한 가이드가 온라인에 많이 있습니다. 해. 귀하의 보안이 크게 향상됩니다.
이 테스트를 완료하려면 SSH 서버를 다시 시작해야 합니다. 그렇지 않으면 /etc/ssh/sshd_config에 도입된 변경 사항이 적용되지 않습니다. 이를 수행하는 방법은 시스템에 따라 다릅니다.
sudo service ssh restart
또는 sudo systemctl daemon-reload sudo systemctl restart sshd
(첫 번째는 Debian 및 그 파생 제품에 적용되고, 두 번째는 Arch Linux, Fedora 및 일반 시스템 시스템에 적용됩니다.)
3.) 설명이 있나요?
PermitRootLogin no
루트로 로그인하려고 하면? 그렇다면 위의 "아니요"를 "예"로 변경하세요.
그래도 문제가 해결되지 않으면 클라이언트 컴퓨터에서 다음을 실행하여 얻을 수 있는 디버깅 세부 정보를 제공해야 합니다.
ssh me@my_pc -vv
이는 많은 양의 데이터를 출력하며 이 작업에 유용합니다. 서버에는 동등한(명백한 보안상의 이유로 더 많은 정보를 제공하는) 옵션이 있습니다. 먼저 서비스를 중지해야 합니다.
sudo service ssh stop
sudo systemctl stop sshd
그런 다음 다시 시작하세요
sudo /usr/sbin/sshd -Dd
sudo /usr/bin/sshd -Dd
두 가지 유형의 시스템에 모두 적용됩니다(Arch 이외의 시스템 배포판에 대해서는 잘 모르겠습니다. 아마도 첫 번째 형식은 Arch를 제외한 모든 시스템에서 작동할 수 있습니다).
그러면 디버깅에 필요한 정보가 생성됩니다.
답변2
어떤 Linux/Unix를 사용하고 있는지 확실하지 않습니다. 나는 우분투를 많이 사용하며 다음과 같이 진행됩니다.
기본적으로 일반 사용자는 SSH를 통해 로그인할 수 있습니다. 다음을 통해 로그인할 수 있습니다.
ssh -l myuser myhost
또는 통해
ssh myuser@myhost
이것을 시도해 보셨나요? 그렇다면 다음과 같은 일반적인 실패 이유를 생각해 볼 수 있습니다.
- Linux/Unix에 따라 로그인을 허용하려면 사용자를 특정 그룹(예: ssh)에 추가해야 할 수도 있습니다.
- 또한 비밀번호를 사용한 로그인이 허용되는지 또는 공개 키만 허용되는지 확인해야 합니다(이 경우 로그인 시 키를 생성하거나 지정해야 할 수 있음).
- 다른 IP를 사용하는 동안 특정 IP에 대한 로그인을 제한할 수 있습니다.
디버그하려면 -vvv
로그인을 시도할 때 ssh를 사용해 보십시오. 그러면 SSH가 시도하는 것과 진행 중인 작업에 대한 많은 디버그 메시지가 표시됩니다.