CentOS 시스템에서 PuTTY를 사용해 SSH 키 기반으로 자동 로그인을 구성하는 방법을 설명합니다. 이 방식은 비밀번호 없이 안전하게 서버에 접근할 수 있도록 해줍니다.
SSH 서버 설정 수정
먼저 SSH 데몬이 공개키 인증을 허용하도록 설정 파일을 편집합니다.
sudo vim /etc/ssh/sshd_config
다음 항목들이 주석 처리되어 있다면 제거하고 활성화하세요:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
설정 변경 후 SSH 서비스를 재시작합니다:
sudo systemctl restart sshd
사용자 SSH 디렉터리 및 키 생성
root 사용자 기준으로 작업할 경우, 먼저 `.ssh` 디렉터리를 생성하고 권한을 설정합니다:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
이제 RSA 키 쌍을 생성합니다:
ssh-keygen -t rsa -b 2048
출력 예시:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [엔터]
Enter passphrase (empty for no passphrase): [비워둠]
Enter same passphrase again: [비워둠]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
공개키를 인증 키로 등록
생성된 공개키를 `authorized_keys` 파일에 추가합니다:
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
파일 권한과 존재 여부를 확인합니다:
ls -l ~/.ssh/
정상적인 출력 예:
-rw-------. 1 root root 408 Oct 5 10:00 authorized_keys
-rw-------. 1 root root 1675 Oct 5 09:58 id_rsa
-rw-r--r--. 1 root root 408 Oct 5 09:58 id_rsa.pub
PuTTY 사용 준비: PPK 키 변환
로컬 머신에 `id_rsa` 개인키를 다운로드한 후, PuTTYgen 도구를 사용해 PPK 형식으로 변환합니다:
- PuTTYgen 실행
- "Load" 클릭 → `id_rsa` 파일 선택 (모든 파일 형식 표시)
- 변환 완료 후 "Save private key"로 `.ppk` 파일 저장
PuTTY 세션 설정
PuTTY 설정 창에서 다음을 구성합니다:
- Session > Host Name: 서버 IP 주소 입력
- Connection > Data > Auto-login username:
root - Connection > SSH > Auth > Private key file: 생성한 `.ppk` 파일 지정
세션을 저장하면 이후 간편하게 접속 가능합니다.
SELinux 문제 해결
접속 시 "Server refused our key" 오류가 발생한다면, SELinux 정책이 원인일 수 있습니다. 현재 상태를 확인하세요:
getenforce
결과가 Enforcing이라면 일시적으로 비활성화:
sudo setenforce 0
영구적으로 비활성화하려면 다음 파일을 수정:
/etc/selinux/config
다음 행을 다음과 같이 변경:
SELINUX=disabled
또는 보안을 유지하면서 경고만 받는 모드로 설정:
SELINUX=permissive
SELinux 컨텍스트 복구 (권장 대안)
SELinux를 완전히 비활성화하지 않고 해결하려면, SSH 관련 파일의 보안 컨텍스트를 복구하세요:
restorecon -R -v /root/.ssh
이 명령은 `.ssh` 디렉터리 내 파일들의 올바른 SELinux 라벨을 재적용합니다. 예:
restorecon reset /root/.ssh/authorized_keys context ... admin_home_t -> ssh_home_t
호스트 간 비밀번호 없는 SSH 설정
서버 간에 SSH 키 기반 통신을 설정하려면, 접근할 대상 서버의 `/etc/ssh/sshd_config`에 다음을 추가:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
변경 후 반드시 SSH 서비스 재시작:
systemctl restart sshd
접근 소스 호스트에서는 해당 사용자의 `.ssh/id_rsa` 파일을 보관하면 됩니다.