> For the complete documentation index, see [llms.txt](https://ia-cloud.gitbook.io/cloudia-manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ia-cloud.gitbook.io/cloudia-manual/vm/ssh-key.md).

# SSH 키

`SSH 키` 메뉴에서는 프로젝트에서 사용할 SSH 공개키를 등록하고, 인스턴스에 연결된 키를 확인하고 관리할 수 있습니다. 등록한 SSH 키는 인스턴스 생성 또는 편집 화면의 `사용자 계정 > SSH 키`에서 선택해 사용할 수 있습니다.

## SSH 키 목록

SSH 키 목록 화면에서는 프로젝트에 등록된 SSH 키를 확인하고, 새 키를 등록하거나 기존 키를 편집·삭제할 수 있습니다.

### 주요 작업

* `등록`: 새 SSH 키를 추가합니다.
* `편집`: 선택한 SSH 키 1개를 수정합니다. 항목을 1개 선택해야 활성화됩니다.
* `삭제`: 선택한 SSH 키 1개를 삭제합니다. 항목을 1개 선택해야 활성화됩니다.

> 💡 **참고:** 목록은 라디오 버튼 기반의 단일 선택만 지원합니다.

### 검색과 정렬

* 검색 조건은 `이름` 1개만 제공합니다.
* 검색어 입력창에는 `검색어를 입력해주세요.`가 표시됩니다.
* `검색` 버튼을 누르면 목록을 조회합니다.
* 기본 정렬은 `생성 일시` 기준입니다.
* 목록은 페이지당 10개씩 표시됩니다.

### 테이블 컬럼

| 컬럼             | 설명                               |
| -------------- | -------------------------------- |
| **이름**         | SSH 키 이름입니다. 클릭하면 상세 화면으로 이동합니다. |
| **ID**         | SSH 키의 고유 식별자입니다.                |
| **지문**         | 등록된 공개키의 Fingerprint입니다.         |
| **연결된 인스턴스 수** | 현재 이 SSH 키가 연결된 인스턴스 수입니다.       |
| **생성 일시**      | SSH 키가 등록된 날짜와 시간입니다.            |

> ⚠️ **주의:** `연결된 인스턴스 수`가 1 이상이어도 항상 삭제가 불가능한 것은 아닙니다. 최종 삭제 가능 여부는 서버가 판단한 결과에 따라 달라질 수 있습니다.

## SSH 키 등록

`등록`을 클릭하면 SSH 키 등록 화면으로 이동합니다.

### 기본 정보

* **이름**\*: SSH 키를 구분하기 위한 이름을 입력합니다.
  * 영문 대/소문자, 숫자, `-`, `_`를 사용할 수 있습니다.
  * 최대 80자까지 입력할 수 있습니다.
* **공개키**\*: OpenSSH 형식의 공개키 문자열을 입력합니다.
  * 한 줄 문자열로 입력합니다.
  * 최대 10,240자까지 입력할 수 있습니다.
  * 입력 길이 카운트가 함께 표시됩니다.

### 공개키 입력 시 확인할 점

* 형식: `<type> <base64> [comment]`
* 허용 type: `ssh-ed25519`, `ssh-rsa`
* 토큰 사이 공백은 1칸만 사용하는 것이 좋습니다.
* 개행 문자는 사용할 수 없습니다.
* 전체 길이는 최소 60자, 최대 10,240자 범위 내에서 입력합니다.

### 하단 버튼

* `취소`: 목록 화면으로 돌아갑니다.
* `등록`: 입력값 검증을 통과하면 SSH 키 등록을 요청합니다.

## SSH 키 편집

목록에서 SSH 키 1개를 선택한 뒤 `편집`을 클릭하면 편집 화면으로 이동합니다.

### 편집 화면 특징

* 등록 화면과 같은 레이아웃을 사용합니다.
* **이름**은 수정할 수 있습니다.
* **공개키**는 읽기 전용으로 표시되며 수정할 수 없습니다.
* 기존 이름과 다른 값으로 변경했을 때만 `편집` 버튼이 활성화됩니다.

### 하단 버튼

* `취소`: 목록 화면으로 돌아갑니다.
* `편집`: 변경한 이름을 저장합니다.

## SSH 키 상세

목록에서 SSH 키 이름을 클릭하면 `SSH 키 상세` 화면으로 이동합니다.

### 상세 정보

* **ID**: SSH 키 고유 ID입니다.
* **이름**: SSH 키 이름입니다.
* **지문**: 공개키 Fingerprint입니다.
* **공개키**: `보기` 버튼을 눌러 전체 공개키를 확인합니다.
* **연결된 인스턴스 수**: 이 SSH 키가 연결된 인스턴스 개수입니다.
* **생성 일시**: 등록된 날짜와 시간입니다.
* **수정 일시**: 마지막 수정된 날짜와 시간입니다.

### 공개키 보기

상세 화면의 `보기` 버튼을 클릭하면 `공개키 상세` 모달이 열리고, 등록된 공개키 원문을 확인할 수 있습니다. 모달 하단의 `확인` 버튼으로 닫습니다.

### 연결된 인스턴스

상세 화면 하단의 `연결된 인스턴스` 영역에서는 현재 SSH 키가 연결된 인스턴스 목록을 확인할 수 있습니다.

| 컬럼        | 설명                                      |
| --------- | --------------------------------------- |
| **이름**    | 인스턴스 이름입니다. 클릭하면 인스턴스 상세 화면으로 이동합니다.    |
| **ID**    | 인스턴스의 고유 식별자입니다.                        |
| **IP 주소** | 인스턴스에 할당된 IP 주소입니다. 여러 개면 쉼표로 함께 표시됩니다. |
| **상태**    | 인스턴스의 현재 상태입니다.                         |
| **vCPU**  | 인스턴스에 할당된 가상 CPU 수입니다.                  |
| **메모리**   | 인스턴스 메모리 용량입니다.                         |
| **생성 일시** | 인스턴스가 생성된 날짜와 시간입니다.                    |

* 목록은 페이지당 5개씩 표시됩니다.
* 기본 정렬은 `ID` 기준입니다.
* 데이터가 없으면 빈 목록으로 표시됩니다.

> 💡 **참고:** SSH 키 연결은 인스턴스 생성 또는 편집 화면의 `사용자 계정 > SSH 키`에서 설정합니다.

## SSH 키 삭제

목록에서 SSH 키 1개를 선택한 뒤 `삭제`를 클릭하면 삭제 확인 모달이 열립니다.

### 삭제 절차

1. 삭제할 SSH 키를 선택합니다.
2. `삭제` 버튼을 클릭합니다.
3. 삭제 가능하면 `<SSH 키 이름> 삭제하시겠습니까?` 메시지가 표시됩니다.
4. `삭제`를 눌러 삭제를 진행합니다.

### 삭제가 불가능한 경우

* 삭제할 수 없는 SSH 키를 선택한 경우 `삭제 불가능한 SSH 키` 메시지가 표시됩니다.
* 이 경우 모달의 `삭제` 버튼은 비활성화됩니다.

> ⚠️ **주의:** 삭제 가능 여부는 단순히 연결된 인스턴스 수만으로 결정되지 않습니다. 실제로는 서버가 판단한 결과에 따라 삭제 가능 여부가 정해집니다.

## 인스턴스에 SSH 키 적용

* 인스턴스 `생성` 또는 `편집` 화면의 `사용자 계정 > SSH 키`에서 사전 등록된 SSH 키를 선택할 수 있습니다.
* SSH 키는 여러 개를 선택할 수 있으며, 최대 5개까지 선택할 수 있습니다.
* 선택한 SSH 키는 인스턴스 초기 설정에 반영되어 지정한 사용자 계정의 `~/.ssh/authorized_keys`에 적용됩니다.

> 💡 **참고:** 비밀번호와 SSH 키는 함께 사용할 수 있습니다. SSH 키를 사용하려면 먼저 현재 프로젝트에 SSH 키를 등록해야 합니다.

## SSH 키로 인스턴스 접속할 때 알아둘 점

* SSH 키를 인스턴스에 적용하면 SSH 클라이언트에서 개인키를 사용해 접속할 수 있습니다.
* 외부 PC에서 직접 접속하려면 `플로팅 IP`, `포트 포워딩`, `VPN/전용망`, `배스천 호스트` 중 하나 이상의 접속 경로가 필요합니다.
* 같은 VPC 또는 사설망 내부에서 접속하는 경우에는 프라이빗 IP로 접속할 수 있습니다.
* SSH 접속이 가능하려면 인스턴스에 연결된 보안그룹에서 `22/tcp` 인바운드가 허용되어 있어야 합니다.

### 접속 명령어 예시

* 일반적인 SSH 접속 예시:

```bash
ssh -i ~/.ssh/<private-key> <user>@<ip-address>
```

* 예시:

```bash
ssh -i ~/.ssh/example-key-ed25519 example-user@192.168.11.13
```

### 관련 문서

* 외부 접속 경로로 플로팅 IP를 사용하는 절차는 [플로팅 IP로 인스턴스 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/blob/main/docs/user-guide/quickstarts/04-access-instance-via-floating-ip.md)를 참고합니다.
* SSH 키 생성, 등록, 인스턴스 연결, 실제 접속 확인 예시는 [SSH 키를 사용한 인스턴스 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/blob/main/docs/user-guide/examples-and-labs/07-access-instance-with-ssh-key.md)를 참고합니다.

> ⚠️ **주의:** SSH 키는 SSH 접속용입니다. 웹 콘솔은 일반적으로 사용자 이름/비밀번호 기반 로그인이 필요하므로, 비밀번호 없이 SSH 키만 설정한 경우 콘솔 로그인은 되지 않거나 제한될 수 있습니다.
