Table of Contents
비밀번호 없이 리눅스 서버 로그인 by ssh key
A 서버 (클라이언트) 에서 B 서버 (서버) 로 비밀번호 없이 로그인하는 방법을 설명합니다.
클라이언트
리눅스
자신의 인증키를 생성합니다.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
서버로 인증키를 복사합니다.
이 단계에서는 비밀번호를 이용한 로그인이 가능해야 합니다.
ssh-copy-id -p 22 username@server_ip
로그인이 가능한지 확인합니다.
ssh -p 22 username@server_ip
윈도우 : PowerShell 사용 (Windows 10/11)
최신 윈도우 버전에는 OpenSSH 클라이언트가 내장되어 있습니다.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
서버로 인증키를 복사합니다.
이 단계에서는 비밀번호를 이용한 로그인이 가능해야 합니다.
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh -p 22 username@server_ip "cat >> ~/.ssh/authorized_keys"
로그인이 가능한지 확인합니다.
ssh -p 22 username@server_ip
윈도우 : PuTTY 사용
- PuTTYgen을 다운로드하고 실행합니다 (https://www.putty.org/)
- "Key" 메뉴에서 키 타입을 선택합니다 (RSA)
- "Generate" 버튼을 클릭하고 마우스를 움직여 랜덤성을 생성합니다
- 생성이 완료되면 "Key comment"에 설명을 입력합니다
- 필요시 "Key passphrase"에 암호를 설정합니다
- "Save private key" 버튼으로 개인키를 저장합니다 (예: my_key.ppk)
- "Save public key" 버튼으로 공개키를 저장합니다 (예: my_key.pub)
생성한 공개키를 서버에 저장합니다.
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- PuTTY를 실행합니다
- "Session" 카테고리에서 서버 주소를 입력합니다
- "Connection > SSH > Auth > Credentials" 카테고리로 이동합니다
- "Private key file for authentication"에서 저장한 .ppk 파일을 선택합니다
- "Session" 카테고리로 돌아가서 "Saved Sessions"에 이름을 입력하고 "Save" 버튼을 클릭합니다
- "Open" 버튼으로 접속합니다
서버
로그인이 성공한 후에는 비밀번호를 이용한 로그인기능을 비활성화 합니다.
sudo vi /etc/ssh/sshd_config
......
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
......
sudo systemctl restart ssh
비밀번호 로그인이 비활성화된 이후에 추가
# 다른 계정으로 로그인
ssh other_user@server_ip
# 여기에 클라이언트의 ~/.ssh/id_rsa.pub 내용을 붙여넣기
sudo vim /home/target_user/.ssh/authorized_keys
인증키는 아래와 같은 형식입니다.
cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADXXXXXXXXXXXXXXX rsa-key-20240131
ssh-rsa AAAAB3NzaC1yc2XXXXXXXXXXXXXXXXXXXXX skyer9@gmail.com