비밀번호 없이 리눅스 서버 로그인 by ssh key

By | 2025년 8월 27일
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 사용

  1. PuTTYgen을 다운로드하고 실행합니다 (https://www.putty.org/)
  2. "Key" 메뉴에서 키 타입을 선택합니다 (RSA)
  3. "Generate" 버튼을 클릭하고 마우스를 움직여 랜덤성을 생성합니다
  4. 생성이 완료되면 "Key comment"에 설명을 입력합니다
  5. 필요시 "Key passphrase"에 암호를 설정합니다
  6. "Save private key" 버튼으로 개인키를 저장합니다 (예: my_key.ppk)
  7. "Save public key" 버튼으로 공개키를 저장합니다 (예: my_key.pub)

생성한 공개키를 서버에 저장합니다.

mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
  1. PuTTY를 실행합니다
  2. "Session" 카테고리에서 서버 주소를 입력합니다
  3. "Connection > SSH > Auth > Credentials" 카테고리로 이동합니다
  4. "Private key file for authentication"에서 저장한 .ppk 파일을 선택합니다
  5. "Session" 카테고리로 돌아가서 "Saved Sessions"에 이름을 입력하고 "Save" 버튼을 클릭합니다
  6. "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

답글 남기기