목차
- ssh-keygen
- ssh-keygen 이란?
- ssh-keygen 인증 흐름
- ssh-keygen 사용법
- server1 -> server2 접속 확인
ssh-keygent 이란?
개발을 하다 보면 서버에 접속해야 할 일이 많습니다. 이때 가장 많이 사용하는 방법 중 하나가 바로 "SSH(Secure Shell)"입니다. 그리고 이 SSH 접속을 더 안전하고 편리하게 만들어주는 도구가 바로 ssh-keygen입니다.
ssh-keygen은 SSH 키 페어(공개키와 개인키)를 생성하는 명령어입니다. 이 키를 이용하면 비밀번호 없이도 안전하게 서버에 접속할 수 있습니다. 주로 리눅스나 macOS에서 터미널을 통해 사용하며, 윈도우에서도 WSL(Windows Subsystem for Linux)이나 Git Bash 등을 통해 사용할 수 있어요.
ssh-keygen 인증 흐름(작동 방법)
- ssh-keygen 명령어를 통해 키 쌍 생성 (개인 키 id_rsa, 공개 키 id_rsa.pub)
- 공개 키를 접속할 서버의 ~/.ssh/authorized_keys에 등록
- SSH 접속 시 서버는 클라이언트에게 확인용 challenge를 보내고,
- 클라이언트는 개인 키로 복호화하여 응답 → 서버가 맞는지 확인하고 접속 허용
[1] 키 생성 (로컬 PC)
┌────────────┐
│ Client │
│ (로컬 PC) │
└────┬───────┘
│
│ ssh-keygen
▼
┌──────────────┐
│ id_rsa │ ← 개인 키 (비밀)
│ id_rsa.pub │ ← 공개 키
└──────────────┘
[2] 공개 키를 서버에 복사
▼
┌────────────┐
│ Server │
└────┬───────┘
│
└→ ~/.ssh/authorized_keys 에 id_rsa.pub 저장
[3] SSH 접속 시도
┌────────────┐ ┌────────────┐
│ Client │────────────▶│ Server │
│ (개인 키) │ SSH 접속 │ (공개 키) │
└────────────┘ └────────────┘
[4] 서버 → 클라이언트에 challenge (암호화된 무작위 데이터 전송)
[5] 클라이언트 → 개인 키로 복호화 후 응답
[6] 서버 → 응답 확인 → 인증 성공
ssh-keygen 사용법
server1 -> server2 암호 없이 ssh-keygen을 통해서 접속하기 위해서는 ssh key 생성이 필요합니다.
먼저 server1에서 ssh key키 생성이 필요합니다.
키 생성시 private key(id_rsa), public key(id_rsa.pub) 2개가 생성 됩니다.
생성된 id_rsa.pub(공용키)를 복사해서 server2에 저장해두면 암호 인증없이 접속이 가능합니다~
자세한 내용은 아래 참고 해주시면 됩니다.
- ssh key 생성 ( server1에서 명령어 수행)
ssh-keygen -t rsa -b 4096
-key 파일 저장 위치를 지정 하지 않고 진행(엔터)시 사용자의 하위 디렉토리인 ~/.ssh에 기본으로 저장 됩니다.
- 생성된 키(2개) 확인 ( server1에서 명령어 수행)
[root@rsyncSvr .ssh]# cd ~/.ssh
[root@rsyncSvr .ssh]# ls -al
합계 12
drwx------. 2 root root 57 4월 9 11:55 .
dr-xr-x---. 7 root root 286 4월 9 15:49 ..
-rw-------. 1 root root 3243 4월 9 11:55 id_rsa
-rw-r--r--. 1 root root 739 4월 9 11:55 id_rsa.pub
-rw-r--r--. 1 root root 176 4월 7 16:43 known_hosts
- 공개키(id_rsa.pub) 복사 (실제 키는 5~6줄 넘을 정도로 깁니다. 아래 키는 예시) (server2에서 명령어 수행)
[root@rsyncSvr .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0p4
- 위 server1에서 복사한 공개키를 server2 authorized_keys 파일에 저장
[root@server /]# cd ~/.ssh
[root@server .ssh]# ls -al
합계 8
drwx------. 2 root root 48 4월 9 11:59 .
dr-xr-x---. 7 root root 286 4월 9 15:49 ..
-rwxr-----. 1 root root 740 4월 9 11:59 authorized_keys
-rw-r--r--. 1 root root 176 4월 7 16:44 known_hosts
[root@server .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0p4
- 권한 설정
# 1. /home/[USER]/.ssh/authorized_keys 파일의 권한은 740으로 변경 필요
chmod 740 /home/[USER]/.ssh/authorized_keys
# 2. /home/[USER]/.ssh 디렉토리의 권한은 700으로 변경 필요
chmod 700 /home/[USER]/.ssh
# 3. /home/[USER] 디렉토리의 권한은 700으로 변경 필요
chmod 700 /home/[USER]
server1 -> server2 ssh-keygen 통해 접속
# server1에서 실행
ssh 사용자이름@server2
비밀번호를 묻지 않고 바로 로그인되면 설정 성공입니다!
server2 서버의 특정 계정(test1) 계정만 접속하고 싶은 경우
- server2 계정(test1) 생성
- test1 홈디렉터리에 .ssh 생성 및 authorized_keys 생성
- test1 홈디렉터리 소유권, 권한 수정
# server2 에서 test1 계정 생성
[root@server2]# useradd test1
[root@server2]# passwd test1
test1 사용자의 비밀 번호 변경 중
새 암호:
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
# /home/test1/.ssh 디렉터리 생성
[root@server2]# mkdir .ssh
# /home/test1/.ssh/authorized_keys 파일 생성 이후 해당 파일에 server1 공개키 복사해서 붙여 넣으면 됩니다.
[root@server2]# vi authorized_keys
# vi 통해 편집기로 authorized_keys에 server1 공개키 값 붙여 넣기
# 파일 권한 및 소유권 변경
[root@server2]# chmod 600 /home/test1/.ssh/authorized_keys
[root@server2]# chmod 700 /home/test1/.ssh
[root@server2]# chown -R test1:test1 /home/test1/.ssh/
- server1 -> server2 test1 계정 접속
[root@server1]# ssh test1@192.168.56.117
[test1@server2 ~]$
비밀번호를 묻지 않고 바로 test1 계정으로 로그인되면 설정 성공입니다!
'OS > Linux | 리눅스' 카테고리의 다른 글
[Linux] Graylog 6.2 설치 하기 (Ubuntu 24.04) (0) | 2025.06.11 |
---|---|
[Linux]리눅스 임의 파일 대량 생성 방법(스크립트) (0) | 2025.04.09 |
[Linux]리눅스 rsync 명령어 및 사용법 (0) | 2025.04.09 |