← 전체로 돌아가기
스킬 linux

SSH 키 생성 및 서버 접속 설정

SSH 키 생성부터 서버 무비밀번호 접속 설정까지

sshkeygensecuritylinuxauthentication

SSH 키로 서버에 안전하게 무비밀번호 접속하는 방법을 알려줄게.

1. SSH 키 생성

클라이언트에서 Ed25519 방식으로 키를 만들어.

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519: 최신 암호화 방식.
  • -C: 키 식별용 주석. 이메일이나 용도를 적어주면 좋아.
  • 경로는 기본값(~/.ssh/id_ed25519) 추천. passphrase는 선택사항.
  • id_ed25519 (개인키)와 id_ed25519.pub (공개키)가 생성돼. 개인키는 절대 유출 금지!

2. 공개키 서버에 복사

ssh-copy-id로 공개키를 서버에 쉽게 복사할 수 있어.

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.1
  • 이 명령어는 서버의 ~/.ssh/authorized_keys에 공개키를 자동으로 추가해줘.

💡 수동 복사: 서버에 접속 후 mkdir -p ~/.ssh 한 다음, 클라이언트의 cat ~/.ssh/id_ed25519.pub 결과물을 echo "복사한_키" >> ~/.ssh/authorized_keys로 추가하면 돼.

3. 권한 설정

보안을 위해 .ssh 폴더와 authorized_keys 파일 권한을 꼭 설정해야 해.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • 700: 소유자만 읽기/쓰기/실행.
  • 600: 소유자만 읽기/쓰기.

4. 접속 테스트

이제 키로 서버에 접속해봐.

ssh user@192.168.1.1

Passphrase 있으면 입력, 없으면 바로 접속될 거야.

여기서 배울 것

  1. SSH 키 생성 명령어 (`ssh-keygen`) 사용법 익히기
  2. 공개키를 원격 서버에 안전하게 복사하는 방법 이해하기
  3. `.ssh` 디렉토리 및 `authorized_keys` 파일 권한 설정의 중요성 알기
  4. SSH 키를 이용한 무비밀번호 접속 원리 파악하기
원본 파일 보기 (.claude/skills/tn-ssh-keygen-copy-id/SKILL.md)
---
name: SSH 키 생성 및 서버 접속 설정
description: Use when the user wants to generate SSH keys, copy the public key to a remote server, and set up passwordless SSH authentication for secure access.
version: 1.0.0
source: /home/son/prj/resume/backup_notes_260317/notion/Tech Note/SSH keygen and copy id 26fd7efd824b807f8a8fd8083b32207f.md
---

# SSH keygen and copy id

ssh keygen 

ssh-keygen -t ed25519 -C "[your_email@example](mailto:your_email@example.com)"

-t : 암호화 방법

-C : 코멘트, 주석이므로 자유. 키의 목적 등

이후 어디 저장할지 묻는데

Enter file in which to save the key (/Users/son_mbp/.ssh/id_ed25519): id_openwrt

이름만 적으면 자동으로 .ssh에 id.openwrt와 .pub파일 생성.

passphrase는 건너뜀.

이후 ssh-copy-id

ssh-copy-id -i ~/.ssh/새로만든키이름.pub [user@192.168.1.1](mailto:user@192.168.1.1)

이번 경우에는

ssh-copy-id -i ~/.ssh/id_openwrt.pub root@192.168.1.1

과정 자체는 

ssh로 생성한 키를

서버의 .ssh/authorized_key에

pub파일 내용을 복사해주면 되는데,

ssh-copy-id는 그것을 자동으로 해줌.

이후 폴더 권한도 설정.

`chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys`

- `chmod 700`: 소유자만 읽기, 쓰기, 실행 가능
- `chmod 600`: 소유자만 읽기, 쓰기 가능

---

### **1. 클라이언트 기기에서 SSH 키 생성**

SSH 키를 생성하려는 **PC(클라이언트)**에서 아래 명령어를 실행합니다.

1. *터미널(리눅스/맥) 또는 Git Bash(윈도우)**를 엽니다.
2. 다음 명령어를 입력합니다.Bash
    
    `ssh-keygen -t ed25519 -C "your_email@example.com"`
    
    - `t ed25519`: 최신 암호화 방식인 **Ed25519**를 사용합니다. 보안성이 높고 속도가 빠릅니다.
    - `C "your_email@example.com"`: 키에 주석을 달아 **식별**을 용이하게 합니다. 이메일 주소나 키 용도를 적어주면 좋습니다.
3. 명령어를 실행하면 키를 저장할 경로를 묻습니다. 기본 경로(`~/.ssh/id_ed25519`)를 사용하는 것이 좋습니다.
4. passphrase(암호)를 설정할지 묻습니다. 추가 보안을 위해 설정하는 것을 권장합니다.
5. 키 생성이 완료되면, `~/.ssh` 폴더에 `id_ed25519`(개인키)와 `id_ed25519.pub`(공개키) 파일이 생성됩니다.
    - **개인키(`id_ed25519`)**: 절대로 외부에 유출되어서는 안 됩니다.
    - **공개키(`id_ed25519.pub`)**: SSH 서버(공유기)에 복사해서 사용합니다.

---

### **2. 공개키를 공유기 서버에 복사**

1. 클라이언트 기기에서 생성된 **공개키(`id_ed25519.pub`)**의 내용을 확인합니다.Bash
    
    `cat ~/.ssh/id_ed25519.pub`
    
2. 공개키 내용을 복사합니다.
3. **SSH로 공유기 서버에 접속**합니다. (이때는 아직 비밀번호로 접속)Bash
    
    `ssh user@192.168.1.1`
    
4. 공유기 서버에 접속한 후, **공개키를 저장할 `.ssh` 폴더를 생성**합니다.Bash
    
    `mkdir -p ~/.ssh`
    
5. **공개키를 `authorized_keys` 파일에 추가**합니다. 아래 명령어 중 하나를 사용합니다.
    - **방법 1: `echo` 사용** (권장)Bash
        
        `echo "복사한_공개키_내용" >> ~/.ssh/authorized_keys`
        
    - **방법 2: `vi` 에디터 사용**Bash
        
        `vi ~/.ssh/authorized_keys
        # i를 눌러 편집 모드 진입 후 공개키를 붙여넣기
        # :wq를 입력하여 저장 후 종료`
        
6. `authorized_keys` 파일과 `.ssh` 폴더의 **권한을 올바르게 설정**합니다.Bash
    
    `chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys`
    
    - `chmod 700`: 소유자만 읽기, 쓰기, 실행 가능
    - `chmod 600`: 소유자만 읽기, 쓰기 가능

---

### **3. 키로 SSH 접속 테스트**

1. 클라이언트 기기에서 SSH 접속을 시도합니다.Bash
    
    `ssh user@192.168.1.1`
    
2. `passphrase`를 설정했다면 이를 입력하고, 설정하지 않았다면 비밀번호 없이 바로 접속됩니다.

이제 비밀번호를 입력하지 않고 **SSH 키를 사용하여 안전하게 공유기 서버에 접속**할 수 있습니다.