CentOS 6 VPS가 있습니다. SSH를 통한 로그인 시도가 많다는 것을 알았기 때문에 키 기반 인증을 통해 로그인을 잠그고 싶었습니다. 지금까지 내가 한 일은 다음과 같습니다.
내 클라이언트 컴퓨터(OSX)에서 다음 명령을 실행합니다.
ssh-keygen -t rsa
기본 설정(비밀번호 없음, 기본 이름 등)을 사용하여 이 작업을 수행합니다.
내 클라이언트에 다음 권한을 설정하세요.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
다음 명령을 사용하여 내 공개 키를 내 VPS의 사용자 폴더 루트에 복사합니다(가짜 이름/IP).
scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub
여기에서 내 .ssh에authorized_keys 파일이 없다는 것을 알았습니다. 그래서 터치를 이용해서 만들었습니다. 그런 다음 CAT를 사용하여 .pub의 내용을authorized_keys 파일에 복사했습니다.
cat id_rsa.pub >> ~/.ssh/authorized_keys
.ssh 및 Authorized_keys에 대한 적절한 권한을 설정합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
/etc/ssh/sshd_config에서 다음 주석을 제거했습니다.
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
그런 다음 sshd를 다시 시작했습니다.
service sshd restart
내가 아는 한, 공개 키 인증을 활성화하기 위해 해야 할 일은 이것이 전부입니다. 그러나 -i 개인 키를 제공하지 않고 SSH를 시도하면 모든 장치에서 허용됩니다.
답변1
클라이언트 키가 기본 위치에 있는 경우 (또는 동등한 구성 파일 항목)을 사용하여 비활성화하지 ~/.ssh/id_$alg
않는 한 자동으로 사용됩니다 . -o IdentitiesOnly=yes
개인 키 사본이 없는 클라이언트에서 연결할 수 있는 경우그리고비밀번호를 지정하지 않으면 서버의 인증 설정이 올바르지 않은 것입니다. 사용하고 싶다면오직개인키->공개키 인증, 설정 PasswordAuthentication no
.
추신: anything >>file
(및 anything >file
) 파일이 존재하지 않으면 필요하지 않은 경우 파일을 생성하십시오 touch
. 기본 원격 디렉터리 scp
는 홈 디렉터리이므로 일반적으로 지정할 필요가 없습니다.
반품:
RSAAuthentication
수십 년 전에 손상되어 절대 사용해서는 안되는 SSHv1과 함께 작동하며 모든 OpenSSH 버전에서 오랫동안 기본적으로 비활성화되어 있으며 CentOS 6에서는 그렇지 않을 것으로 예상하지만 7.4부터 서버 측에서 완전히 제거되었습니다. 최신 버전으로 받으세요.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(게다가 이것은 authorized_keys2
레거시이며 더 이상 사용되지 않음)이 기본값이므로 실제로 주석 처리를 제거할 필요가 없습니다.
답변2
공개/개인 키만 허용하려면 서버에서 비밀번호 인증을 명시적으로 비활성화해야 합니다. 설정을 변경하거나 추가하는 경우 /etc/ssh/sshd_config
:
PasswordAuthentication no
또한 Kerberos 및 GSSAPI와 같이 사용하지 않는 다른 모든 유형의 인증을 명시적으로 비활성화하고 싶습니다.