PuTTY와 Linux 서버에서 SSH 키 인증 구성하는 방법 — 5단계

요약
정의: SSH — 네트워크를 통한 안전한 원격 로그인 프로토콜입니다. 공개키 인증 — 공개키/개인키 쌍으로 서버 접근을 허용하는 인증 방식입니다. Pageant — PuTTY 에이전트로 개인키의 암호를 한 번만 입력하도록 도와줍니다.
준비물
- Windows PC와 PuTTY 도구 모음(putty.exe, puttygen.exe, pageant.exe 등)
- SSH 접속 권한이 있는 Linux 서버의 루트 또는 sudo 권한
- 로컬에 안전하게 보관할 수 있는 개인키 저장소
다운로드 링크(원본): http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip
중요: 위 URL은 예시 링크입니다. 최신 버전과 아키텍처(x86/x64)를 확인하세요.
빠른 5단계 개요
- PuTTY 실행 파일 집합(zip) 받기
- PuTTYgen으로 공개/개인키 생성
- 서버에 사용자 계정 생성 및 공개키 저장
- Pageant에 개인키 추가
- PuTTY로 비밀번호 없이 접속
1. PuTTY 바이너리 zip 파일 받기
링크를 열고 putty.zip을 다운로드합니다:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip
다운로드 후 압축을 풀고 puttygen.exe, pageant.exe, putty.exe가 있는지 확인하세요.
2. 개인키와 공개키 쌍 생성
PuTTYgen.exe를 실행합니다. Generate(생성) 버튼을 누르고 마우스를 움직여 엔트로피를 채웁니다. 키가 생성되면 키 암호(패스프레이즈)를 입력하세요. 추후 키가 도난되더라도 패스프레이즈가 있으면 안전합니다. 가능한 한 추측하기 어려운 문구를 사용하세요.
- Save public key 버튼으로 공개키를 저장하세요.
- Save private key 버튼으로 개인키(.ppk)를 안전한 곳에 저장하세요.
중요: PuTTYgen이 출력하는 ‘public key for pasting into OpenSSH authorized_keys’ 영역의 텍스트을 복사해 두세요. 이 텍스트 한 줄 전체를 서버의 authorized_keys2 파일에 붙여넣어야 합니다.
3. Linux 서버 구성 (사용자 생성 및 공개키 저장)
예시에서 사용할 로그인 이름은 autotimesheet입니다. 실제 사용하는 계정명으로 바꾸세요.
루트 권한으로 쉘에서:
adduser autotimesheet --disabled-password
사용자 정보(실명 등)는 비워도 됩니다.
그 다음:
su autotimesheet
cd /home/autotimesheet
mkdir .ssh
chmod 700 .ssh
cd .ssh
그 폴더에 authorized_keys2 파일을 생성하고, PuTTYgen에서 복사한 공개키 텍스트를 “한 줄”로 붙여넣습니다. 매우 중요합니다: 모든 공개키는 단일 행(줄)이어야 합니다.
주의사항 및 금지 항목:
- 공개키 끝에 있는 이메일 주소(예: [email protected])를 추가하지 마세요.
- “BEGIN PUBLIC KEY” 또는 “END PUBLIC KEY”를 넣지 마세요.
- 키 뒤에 붙는 임의의 꼬리표(예: rsa-key-20090614)를 임의로 추가하지 마세요.
- 반드시 “ssh-rsa” 또는 키 타입으로 시작해야 합니다.
예시 한 줄:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBzPeFQv+295iKzuuPH0jA9449pSHVpCwXvCR9EstmYh...
권한 설정:
chmod 600 authorized_keys2
중요: 최근 OpenSSH 배포판은 authorized_keys(번호 없는 파일)를 기본으로 사용합니다. 일부 배포판은 authorized_keys2를 지원하지 않을 수 있으므로, 문제가 발생하면 authorized_keys에 동일한 내용을 넣어 보세요.
4. 개인키를 PuTTY 인증 에이전트(Pageant)에 추가
Pageant.exe를 실행합니다. 실행 후 시스템 트레이 아이콘을 우클릭하고 “Add Key”(키 추가)를 선택합니다. 저장한 .ppk 개인키 파일을 선택하고, 패스프레이즈를 입력하면 Pageant가 해당 키를 메모리에 적재합니다.
Pageant는 개인키의 패스프레이즈를 한 번만 묻고 이후 연결에서 자동으로 인증을 제공합니다.
5. PuTTY로 서버에 접속
PuTTY를 열고 Host Name(또는 IP)란에 서버 주소를 입력하고, Auto timesheet 계정으로 로그인합니다 (예: autotimesheet@yourserver). SSH 접속을 시도하면 Pageant에 로드된 키로 인증이 진행되며 비밀번호 프롬프트 없이 로그인됩니다.
성공적으로 로그인되면 키 에이전트에서 인증을 받아 비밀번호 입력 없이 접속됩니다.
보안 강화 권장 사항
- /etc/ssh/sshd_config에서 PasswordAuthentication no로 설정하여 비밀번호 로그인을 차단하세요. 변경 후 sshd 재시작이 필요합니다.
- PermitRootLogin no로 루트 직접 로그인을 금지하세요.
- AllowUsers로 접속 허용 계정을 제한하세요.
- 개인키는 반드시 안전한 장소에 보관하고 백업하세요. 오프라인 백업 권장.
- 키에 패스프레이즈를 설정하세요. 에이전트 사용 시 편의성도 유지됩니다.
예시: sshd_config 일부 권장 설정
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM yes
문제 해결(트러블슈팅)
- 로그인 실패 시 먼저 서버의 /var/log/auth.log 또는 /var/log/secure를 확인하세요.
- 권한 문제: .ssh 디렉터리는 700, authorized_keys2는 600이어야 합니다.
- 키 형식 문제: authorized_keys2에 붙여넣은 키가 여러 줄로 분리되었는지 확인하세요. 한 줄이어야 합니다.
- 파일명 문제: modern OpenSSH는 authorized_keys를 사용합니다. authorized_keys2에 넣어도 동작하지 않으면 authorized_keys로 복사해 보세요.
- Pageant가 키를 올바르게 로드했는지 시스템 트레이 아이콘을 우클릭해 확인하세요.
대안 접근법
- OpenSSH(Windows 10/11 내장)를 사용하면 PuTTY 없이도 OpenSSH 키를 이용한 접속이 가능합니다.
- WSL(Windows Subsystem for Linux)을 사용하여 리눅스 OpenSSH 도구로 키를 관리할 수 있습니다.
- 다른 에이전트(예: KeeAgent, gpg-agent+ssh 등)를 사용해 키를 관리할 수 있습니다.
역할별 체크리스트
관리자(루트 권한):
- 사용자 생성 및 홈 디렉터리 권한 확인
- /etc/ssh/sshd_config 수정 및 sshd 재시작
- 접근 제어(AllowUsers) 설정
개발자/사용자:
- PuTTYgen으로 키 생성 및 개인키 안전 보관
- Pageant에 키 로드 및 정상 동작 확인
- 공개키를 서버에 정확히 붙여넣기
검증 기준
- PuTTY로 접속 시 비밀번호 입력 없이 쉘 프롬프트가 나타난다.
- 서버 로그에 공개키 인증 성공 메시지가 기록된다.
- 비밀번호 기반 로그인 시도가 차단되어야 한다(테스트 시 확인).
언제 이 방법이 실패하는가
- 서버에서 공개키 인증을 비활성화한 경우
- 권한이 틀리거나 키가 한 줄이 아닌 경우
- Pageant에 키가 로드되지 않았거나 패스프레이즈를 잘못 입력한 경우
용어집(한 줄 정의)
- 공개키(public key): 서버에 놓는 인증용 공개 정보.
- 개인키(private key): 소유자만 보관하는 비밀 키.
- Pageant: PuTTY 전용 SSH 에이전트.
요약: 공개키 인증은 비밀번호 인증보다 안전합니다. PuTTYgen으로 키를 만들고 공개키를 서버에 넣고 Pageant로 개인키를 관리하면 Windows에서 편리하고 안전하게 SSH 접속을 할 수 있습니다.