← 전체로 돌아가기
스킬 network

SSH 키 생성 및 서버 접속

SSH 키 만들고 서버에 심어 패스워드 없이 접속함.

sshkeygensecuritylinuxauthentication

SSH keygen

ssh-keygen -t ed25519 -C "your_email@example.com"

-t : 암호화 방법 (ed25519 최신, 빠름) -C : 코멘트, 주석. 키 목적이나 이메일 적음.

키 저장 경로 물으면 그냥 엔터 (기본 경로). 아니면 id_openwrt처럼 이름만 적으면 ~/.ssh/id_openwrt.pub 파일 생김. passphrase는 건너뜀.

이후 ssh-copy-id로 서버에 공개키 심기

ssh-copy-id -i ~/.ssh/[새로만든키이름].pub [user@ip]

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

ssh-copy-id는 서버의 ~/.ssh/authorized_keys에 내 pub 파일 내용 복사해주는 걸 자동으로 해줌. 수동으로 cat해서 echo로 붙여넣는 거 그거 ssh-copy-id로 퉁침.

권한 설정도 중요함.

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

이렇게 하면 패스워드 없이 키로 SSH 접속 가능.

여기서 배울 것

  1. `ssh-keygen`으로 SSH 키 생성
  2. `ssh-copy-id`로 공개키 서버에 자동 복사
  3. `.ssh` 폴더, `authorized_keys` 파일 권한 설정 필수
원본 파일 보기 (.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 키를 사용하여 안전하게 공유기 서버에 접속**할 수 있습니다.