SSH에서 패스워드 인증을 비활성화하고 공개 키 인증만을 허용하려면, SSH 서버의 설정을 변경해야 합니다. 이를 통해 SSH 접속 시 비밀번호 입력 방식이 차단되고, 공개 키로만 인증이 가능하게 됩니다.
1. SSH 설정 파일 수정
SSH 설정 파일 /
etc/ssh/sshd_config를 수정하여 패스워드 인증을 비활성화하고, 공개 키 인증을 활성화할 수 있습니다.
- SSH 설정 파일 열기:
sudo nano /etc/ssh/sshd_config
- 패스워드 인증을 비활성화하고 공개 키 인증을 활성화하는 설정 변경:
아래의 항목들을 찾아서 수정합니다:
- 패스워드 인증을 비활성화:
PasswordAuthentication no
- 공개 키 인증을 활성화:
PubkeyAuthentication yes
중요 : PasswordAuthentication
가 yes
로 설정되어 있으면 비밀번호를 통한 인증이 가능해지므로 반드시 no
로 변경해야 합니다.
- 필요한 경우 루트 사용자로의 패스워드 인증 차단: 만약 루트 사용자로의 패스워드 기반 로그인을 차단하고 싶다면 다음 항목도 수정해야 합니다:
PermitRootLogin prohibit-password
이 설정은 루트 사용자로 패스워드를 사용한 로그인은 차단하고, 공개 키를 이용한 로그인은 허용합니다.
- 설정을 저장하고 편집기 종료:
설정을 마친 후, 파일을 저장하고 닫습니다.
- SSH 서버 재시작
설정을 적용하려면 SSH 서버를 재시작해야 합니다.
sudo systemctl restart sshd
2. 서버에 공개 키를 설정
서버에 공개 키가 설정되지 않은 상태에서 패스워드 인증을 비활성화하면 접속이 불가능해질 수 있습니다. 따라서 미리 서버에 공개 키를 설정해야 합니다.
- 로컬 컴퓨터에서 SSH 키 생성 (키가 없을 경우):
ssh-keygen -t rsa -b 4096
기본 설정을 따르고 id_rsa
라는 개인 키와 id_rsa.pub
라는 공개 키를 생성합니다.
- 공개 키를 서버에 복사:
ssh-copy-id user@server_ip
user
는 서버에서 사용할 계정 이름이고, server_ip
는 접속할 서버의 IP 주소입니다.
이 명령은 로컬 컴퓨터의 ~/.ssh/id_rsa.pub
공개 키를 서버의 ~/.ssh/authorized_keys
에 추가합니다.
- 설정 확인
모든 설정을 완료한 후, 서버에 다시 접속해보면 공개 키 인증 방식으로만 SSH 접속이 가능하게 됩니다. 패스워드 인증은 허용되지 않으며, 공개 키가 등록되지 않은 경우에는 접속이 차단됩니다.
『 출처 – ChatGPT 』