CentOS7 Xshell7 Public Key 인증 SSH 접속 설정 방법 | RSA 키 생성부터 연결까지
CentOS7 Xshell7 Public Key 인증 SSH 접속 설정 방법
패스워드 방식 버리고 Public Key 방식으로 — 더 안전하고 더 편하다
📋 이 글에서 배우는 것
SSH(Secure Shell) 접속 방식에는 크게 두 가지가 있습니다. 패스워드 인증은 간단하지만 브루트포스(무차별 대입) 공격에 취약하고,
Public Key 인증은 수학적으로 연결된 키 쌍(개인키 + 공개키)을 사용해 훨씬 강력한 보안을 제공합니다.
이 글에서는 Windows 환경에서 RSA 키 쌍을 생성하고, 공개키를 CentOS7 서버에 등록한 뒤,
Xshell7에서 패스워드 없이 접속하는 전체 과정을 단계별로 다룹니다.
Xshell에서 패스워드로 연결하는 방식 말고 Public Key 방식으로 접속을 해봤습니다.
기존의 ssh 연결 방법은 아래 링크를 참고해 주시면 되겠습니다.
STEP 01 CentOS7 .ssh 디렉터리 생성
centos7에서 ssh 디렉터리를 먼저 생성하겠습니다.
💡 왜 .ssh 디렉터리가 필요한가?
SSH 인증에 사용되는 authorized_keys 파일은 반드시 ~/.ssh/ 디렉터리 안에 위치해야 합니다.
이 디렉터리가 없으면 공개키를 전송해도 SSH 데몬이 인식하지 못합니다.
또한 디렉터리 권한이 700, authorized_keys 파일 권한이 600이 아니면 보안 정책상 Public Key 인증이 동작하지 않으므로 권한 설정도 중요합니다.
.ssh 디렉터리는 반드시 chmod 700 (소유자만 rwx),
나중에 만들어질 authorized_keys는 chmod 600으로 설정해야 합니다.
권한이 잘못되면 sshd가 해당 파일을 무시합니다.
STEP 02 sshd_config 설정
💡 sshd_config 파일이란?
/etc/ssh/sshd_config는 SSH 서버 데몬(sshd)의 메인 설정 파일입니다.
인증 방식, 허용 사용자, 포트 번호, 로그인 제한 등 SSH 서버의 모든 동작을 제어합니다.
이 파일을 수정한 후에는 반드시 systemctl restart sshd로 서비스를 재시작해야 변경사항이 적용됩니다.
패스워드 인증을 비활성화하면 Public Key 인증만 허용됩니다. 키 등록 전에 먼저 적용하면 기존 세션이 끊길 수 있으므로, 키 등록 후 재시작하는 것을 권장합니다.
💡 함께 확인하면 좋은 sshd_config 설정들
PubkeyAuthentication yes— 공개키 인증 활성화 (기본값 yes, 확인 필요)AuthorizedKeysFile .ssh/authorized_keys— 공개키 파일 위치 지정PermitRootLogin yes— root 계정 SSH 로그인 허용 여부 (보안상 no 권장)Port 22— SSH 포트 (보안을 위해 다른 포트로 변경 권장)
STEP 03 Windows에서 Public Key 생성 (ssh-keygen)
Windows CMD에서 .ssh 폴더를 생성하고 RSA 키 쌍을 생성합니다.
💡 Public Key 인증 원리 — 키 쌍이란?
ssh-keygen은 수학적으로 연결된 두 개의 파일을 생성합니다.
id_rsa(개인키 / Private Key) — 절대 외부에 공유하면 안 됨. 클라이언트(Windows)에만 보관id_rsa.pub(공개키 / Public Key) — 서버의authorized_keys에 등록하는 파일
접속 시 서버는 공개키로 암호화한 챌린지를 보내고, 클라이언트가 개인키로 복호화해 응답하는 방식으로 신원을 검증합니다. 개인키 없이는 접속 자체가 불가능하므로 패스워드 방식보다 훨씬 안전합니다.
id_rsa (개인키) + id_rsa.pub (공개키) 가 C:\Users\USER\.ssh\ 에 생성되었습니다.
STEP 04 공개키를 서버로 전송 (scp) + sshd 재시작
생성한 키가 있는 디렉터리에서 scp 명령어로 공개키를 서버에 전송합니다.
💡 scp(Secure Copy)란?
scp는 SSH 프로토콜을 기반으로 파일을 원격 서버와 안전하게 주고받는 명령어입니다.
-P 22는 SSH 포트를 지정하는 옵션이며, 서버 포트를 변경했다면 해당 포트 번호로 수정해야 합니다.
공개키를 서버의 ~/.ssh/authorized_keys로 직접 전송함으로써 서버에 별도 조작 없이 등록이 완료됩니다.
/root.ssh 가 아니라
/root/.ssh (점 포함) 입니다.
그리고 파일명을 반드시 authorized_keys로 지정해야 합니다. 다른 이름으로 전송하면 SSH가 인식하지 못합니다.
💡 authorized_keys 파일 권한 설정
scp 전송 후 CentOS7에서 권한을 확인 및 설정해야 합니다.
설정 후 sshd 서비스를 재시작합니다.
STEP 05 Xshell Public Key 설정
Xshell에서 기존 패스워드 방식을 해제하고 Public Key 방식을 체크 후 설정합니다.
💡 Xshell에서 Public Key 설정 경로
- 세션 속성 열기 → 연결 → 사용자 인증
- 방법(Method): Public Key 선택
- 사용자 키: 찾아보기 → 사용자 키 가져오기 클릭
id_rsa(개인키, 확장자 없는 파일) 선택- Passphrase 설정했다면 암호란에 입력
STEP 06 접속 확인
설정이 끝난 후 연결하면 패스워드 입력 없이 바로 접속이 되는 것을 확인할 수 있습니다.
PasswordAuthentication no)을 비활성화했으므로 브루트포스 공격 위협도 차단됩니다.
전체 흐름 요약
자주 묻는 질문 (FAQ)
~/.ssh는 chmod 700,
authorized_keys는 chmod 600인지 확인하세요.
/var/log/secure 로그에서 상세 오류 메시지를 확인할 수 있습니다.
(tail -f /var/log/secure)
ssh-keygen으로 키를 생성한 뒤, 각각의 id_rsa.pub 내용을
서버의 authorized_keys 파일에 한 줄씩 추가하면 됩니다.
(cat id_rsa.pub >> ~/.ssh/authorized_keys)
restorecon -Rv ~/.ssh 명령으로 보안 컨텍스트를 복구하면 됩니다.
또는 getenforce로 SELinux 상태를 확인하세요.
ssh 명령을 사용할 수 있습니다.
Xshell은 탭, 세션 관리, 색상 테마 등 편의 기능이 풍부해 여러 서버를 관리할 때 유리합니다.
더 안전하고 더 편하다.












