# SSH를 사용하여 클라우드 서버에 연결하기

Source: https://support.kapsulehost.com/ko-kr/cloud-servers-ssh-connect

SSH는 자신의 터미널에서 클라우드 서버에 대한 루트 셸을 제공하며, 연결하는 데 필요한 모든 세부 정보는 KPanel의 서버 페이지에 표시되어 복사할 준비가 되어 있습니다.

클라우드 서버는 운영 체제부터 시작하여 전부 귀사의 것이므로, 대부분의 작업은 명령줄에서 수행됩니다. 이 가이드는 연결 세부 정보 찾기, 키 또는 비밀번호로 연결, 키 올바르게 설정, 브라우저 콘솔 대체 옵션, 거의 모든 연결 실패 원인이 되는 몇 가지 오류를 다룹니다.

## 연결 세부 정보 찾기

1. [KPanel](https://kpanel.kapsulehost.com)에 로그인합니다.
2. 왼쪽 사이드바에서 **Cloud Servers**를 클릭한 다음 서버를 클릭합니다.
3. **Connection** 카드를 찾습니다.

카드에는 세 개의 클립보드에 복사 가능한 필드가 있습니다:

| 필드 | 설명 |
|---|---|
| **SSH Command** | 터미널에 바로 붙여넣을 수 있는 완전한 명령 |
| **IPv4 Address** | 서버의 공개 IPv4 주소 |
| **IPv6 Address** | 할당된 경우 표시되는 서버의 IPv6 주소 |

![KPanel의 클라우드 서버에 있는 Connection 카드](https://support.kapsulehost.com/help/screenshots/cloud-servers-ssh-connect.902ba66d.webp)

> **Note:** 카드에 "프로비저닝이 완료되면 IP 주소가 여기에 나타납니다"라고 표시되면 서버가 아직 구축 중입니다. 클라우드 서버 프로비저닝은 대략 60초가 소요되며 완료되면 페이지가 자동으로 업데이트됩니다.

## SSH 키로 연결

서버를 주문할 때 **SSH Public Key** 필드에 공개 키를 붙여넣은 경우, 키 인증이 이미 구성되어 있고 입력할 비밀번호가 없습니다.

1. Connection 카드에서 **SSH Command**를 복사합니다.
2. 터미널에 붙여넣고 Enter를 누릅니다.

```
ssh root@203.0.113.1
```

SSH 클라이언트가 일치하는 개인 키를 찾아 자동으로 인증합니다. 키가 표준이 아닌 위치에 있는 경우 명시적으로 가리킵니다:

```
ssh -i ~/.ssh/my-kapsule-key root@203.0.113.1
```

> **Tip:** 키는 비밀번호보다 쉽고 안전합니다. 기억할 것도 없고, 피싱 프롬프트에 입력할 것도 없으며, 자동화된 비밀번호 추측 공격이 찾을 것도 없습니다. 여전히 비밀번호를 사용 중이라면 키를 생성하고 추가하는 데 약 2분이 소요됩니다.

### 처음으로 키 설정하기

서버가 아닌 자신의 컴퓨터에서 키 쌍을 생성합니다:

```
ssh-keygen -t ed25519 -C "your-email@example.com"
```

Enter를 눌러 기본 위치를 수락하고 메시지가 표시되면 암호를 설정합니다. 이제 두 개의 파일이 생깁니다:

- `~/.ssh/id_ed25519`은 **개인** 키입니다. 컴퓨터를 떠나지 않으며 어디에도 붙여넣지 않습니다.
- `~/.ssh/id_ed25519.pub`은 **공개** 키입니다. 이것이 서버에 제공하는 것입니다.

공개 키를 출력하고 `ssh-ed25519` 접두사와 뒤따르는 주석을 포함하여 전체 한 줄을 복사합니다:

```
cat ~/.ssh/id_ed25519.pub
```

서버를 주문할 때 해당 줄을 **SSH Public Key** 필드에 붙여넣습니다. 필드 자체 힌트가 명확하게 말합니다: "키 기반 인증을 활성화하려면 공개 키를 붙여넣으세요. 비워두면 루트 비밀번호가 이메일로 전송됩니다."

> **Warning:** `.pub` 없이 파일의 내용을 붙여넣지 마세요. 그것은 개인 키이며 이를 가진 누구든지 그것을 신뢰하는 모든 서버에서 사용자로 로그인할 수 있습니다. 개인 키를 실수로 공유한 경우 새 쌍을 생성하고 모든 곳에서 공개 키를 즉시 교체하세요.

이미 보유한 서버에 키를 추가하려면 현재 가능한 방법으로 연결하고 공개 키 줄을 `/root/.ssh/authorized_keys`에 추가합니다.

## 비밀번호로 연결

주문 시 **SSH Public Key** 필드를 비워둔 경우, 서버가 프로비저닝되면 루트 비밀번호가 이메일로 전송됩니다.

1. Connection 카드에서 **SSH Command**를 복사합니다.
2. 터미널에 붙여넣고 Enter를 누릅니다.
3. 메시지에서 이메일 받은 루트 비밀번호를 입력합니다.

들어간 후 `passwd`을(를) 사용하여 즉시 비밀번호를 변경하고 SSH 키를 추가합니다. 이메일로 받은 비밀번호는 자격 증명이 이동해야 할 거리보다 더 멀리 이동했습니다.

## 브라우저 콘솔

**Browser console**은 SSH 클라이언트 없이 KPanel 내에서 터미널을 제공하며 포트 22를 거치지 않습니다. 자신의 액세스가 손상된 순간을 위한 도구입니다.

1. 서버 페이지를 열고 작업 버튼에서 **Browser console**을 클릭하거나 `/cloud-servers/<server-id>/console`로 이동합니다.
2. **Start console**을 클릭합니다. KPanel은 HTTPS를 통해 일회용 자격 증명으로 서버의 터미널을 시작합니다.
3. **Username**과 **Password**가 페이지에 표시되며 **Copy credentials** 버튼이 있습니다. 터미널이 페이지 자체에서 열리며, 브라우저가 이 자격 증명을 요청할 수 있습니다.
4. 모든 셸에서와 같이 작업합니다.

> **Note:** 콘솔 세션은 30분 후 자동으로 중지됩니다. 새 세션을 시작하면 새로운 자격 증명이 발급되므로 완료된 후 청취 중인 것이 남아 있지 않습니다. 브라우저 콘솔은 또한 서버에 HTTPS가 구성된 도메인이 필요하다는 의미이며, 이는 패널을 통해 설치된 앱을 의미합니다. 기본 서버에서는 콘솔이 자동으로 실패하지 않고 그렇게 알려줍니다.

콘솔을 사용하여 사용자를 잠근 방화벽 규칙을 실행 취소하거나, 비밀번호를 재설정하거나, `sshd` 구성을 복구합니다. SSH를 정상적으로 다시 사용할 수 있으면 더 이상 필요하지 않습니다.

## SSH 액세스 안전 유지

포트 22는 KapsuleHost 서버 방화벽에서 설계상 항상 열려 있으므로 방화벽 변경으로 인해 시스템에 완전히 잠금이 될 수 없습니다.

이는 셸의 보안이 포트를 숨기는 방법이 아니라 인증 방식에 달려 있음을 의미합니다. 두 가지가 대부분의 작업을 수행합니다:

- **키를 사용하고 비밀번호는 사용하지 마세요.** 그러면 추측한 비밀번호는 들어갈 수 없습니다.
- **fail2ban을 켜진 상태로 두세요.** 기본적으로 활성화되어 있으며 SSH 인증에 반복적으로 실패하는 주소를 차단합니다. 서버의 **Management** 페이지에서 스위치를 볼 수 있습니다.

[Cloud Server Firewall and Security Management](https://support.kapsulehost.com/ko-kr/cloud-servers-firewall)는 둘 다 다루며, 자신의 애플리케이션이 필요로 하는 포트에 대한 사용자 지정 규칙도 포함합니다.

## 문제 해결

**"Connection refused."** 아무것도 청취 중이 아닙니다. 서버가 KPanel에 **Running**으로 표시되는지 확인하고, 꺼져 있으면 전원을 켜고, 브라우저 콘솔을 사용하여 `sshd`이(가) 실행 중인지 확인합니다.

**"Connection timed out."** 트래픽이 도착하지 않습니다. Connection 카드의 IPv4 주소를 사용 중인지 확인하고, 자신의 네트워크가 아웃바운드 포트 22를 차단하는지 확인합니다. 회사 또는 캠퍼스 네트워크가 때때로 그럴 수 있습니다.

**"Permission denied (publickey)."** 서버가 키를 인식하지 못합니다. `.pub` 줄을 전체적으로 변경되지 않은 채로 붙여넣었는지, 클라이언트가 일치하는 개인 키를 제공하고 있는지 확인합니다. ssh 명령에 `-v`를 추가하여 어떤 키를 시도했는지 확인합니다.

**비밀번호에 "Permission denied, please try again".** 비밀번호가 잘못되었거나 키를 제공했기 때문에 비밀번호 인증이 비활성화되어 있습니다. 키를 사용하거나 브라우저 콘솔을 사용합니다.

**"REMOTE HOST IDENTIFICATION HAS CHANGED."** 서버의 호스트 키가 클라이언트가 기억하는 것과 다릅니다. 이는 [rebuild](https://support.kapsulehost.com/ko-kr/cloud-servers-rebuild) 이후에 예상되는 것입니다. 운영 체제가 재설치되었기 때문입니다. `known_hosts` 파일에서 그 IP 주소에 대한 오래된 항목을 제거하고 다시 연결합니다. 아무것도 재구축하지 않았다면 연결하기 전에 중단하고 당사에 문의하세요.

**방화벽 규칙으로 자신을 잠금.** 포트 22는 열려 있으므로 이는 드물지만, 서버 내부의 규칙이 사용자를 차단한 경우 브라우저 콘솔을 사용하여 제거합니다.

위의 어느 것도 셸을 제공하지 않으면 서버 이름, 연결 중인 주소, 정확한 오류 텍스트와 함께 [support@kapsulehost.com](mailto:support@kapsulehost.com)으로 이메일을 보냅니다.
