[Linux] SSH Keygen으로 원격 접속 키 생성하기

SSH Key 인증?

image
SSH Key 인증은 비대칭 암호화라는 방식을 사용합니다.


한 쌍의 키(Key Pair)를 생성하여 하나는 내가 가지고 있고(개인 키, Private Key),

하나는 서버에 등록(공개 키, Public Key)하여 접속 시 서로를 확인하는 방식이죠.


  • Public Key (공개키): 누구나 볼 수 있는 키입니다. 접속하려는 원격 서버에 저장합니다.
  • Private Key (개인키): 나만 가지고 있어야 하는 비밀 키입니다. 절대 외부로 유출되어서는 안 됩니다.

SSH Key 로그인 설정

1. 로컬에서 키 쌍 생성하기 (ssh-keygen)

먼저 내 컴퓨터(Client)에서 키 쌍을 생성해야 합니다.

터미널을 열고 다음 명령어를 입력해요.

ssh-keygen -t ed25519 -C "your_email@exam.com"
  • -t ed25519: 최근 가장 권장되는 안전하고 빠른 암호화 알고리즘이라고 합니다.
    • 구형 서버라면 -t rsa -b 4096으로 변경해주세요.
  • Enter file in which to save the key: 위 명령을 실행할 시 해당 input이 발생합니다. 키를 저장할 경로를 지정해주면 됩니다. 보통 엔터를 눌러서 기본 경로(~/.ssh/id_ed25519)를 사용합니다.
  • Enter passphrase: 키 자체에 비밀번호를 거는 단계입니다. 보안을 위해 권장되지만 보통 설정하지 않습니다.

2. 서버로 공개키 전송하기 (ssh-copy-id)

생성된 공개키(.pub)를 접속할 서버에 전송해야 합니다!


ssh-copy-id라는 명령어를 쓰면 접속할 서버로 공개키 전송이 가능합니다.

ssh-copy-id 사용자명@ip

이 명령을 실행하면 ~/.ssh/authorized_keys 파일에 내 공개키 내용이 자동으로 추가됩니다.


3. SSH 접속 확인

이제 비밀번호 없이 로그인이 되는지 검증해보면 됩니다!

ssh 사용자명@ip

[번외] 비밀번호 로그인 금지

키 로그인이 성공했다면, 보안을 위해서 비밀번호 로그인 자체를 금지하는 것 이 좋습니다.

서버의 SSH 설정을 다음과 같이 변경해주세요.

$ vim /etc/ssh/sshd_config

# 다음 항목 수정
PasswordAuthentication no # 비밀번호 로그인 차단
PermitRootLogin prohibit-password # root는 키로만 접속 허용

비밀번호 로그인을 끄기 전에, 반드시 키 로그인이 정상적으로 작동하는지 먼저 확인해야 합니다!!

그렇지 않으면 서버 접속 수단이 완전히 끊길 수 있어요~

관련 글

지식 공유3분 읽기

[Linux] Ubuntu 24.04 -> Rocky 10 마이그레이션

개요 기존 홈서버에서 운영 중인 Ubuntu 24.04 서버의 모든 서비스( Docker , Gatsby , 데이터 등등)를 새로운 Rocky 서버로 누락 없이 이관하기 위한 과정을 기록해보려고 합니다. 사전 준비 작업 전에, 양쪽...

리눅스
지식 공유3분 읽기

[Linux] 테스트 서버 디스크 장애 이슈

개요 OS : Rocky 8.10 디스크 구성 /dev/sda : 메인 디스크 /dev/sdb : 백업 디스크 상황 평소에 서버 로그에 READ sda .... , swap 관련 메시지가 간간히 보였음. 어느 날 I/O 관련 로그가...

리눅스
지식 공유2분 읽기

[Linux] Rocky 10 설치 시 biosboot 파티션 설정 경고

개요 Rocky 10 디스크 파티션을 설정하는 도중에 다음과 같은 경고 메세지를 보게 되었습니다. "BIOS 기반 시스템은 GPT 디스크에서 부팅하기 위해 1Mib 'biosboot' 유형의 파티션이 필요합니다." 이 메시지에서 시작...

리눅스