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