

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# SSH 키 교체
<a name="keyrotation"></a>

보안상 SSH 키 교체는 보안 모범 사례로 권장됩니다. 일반적으로 이러한 교체는 보안 정책의 일부로 지정되며, 자동화된 방식으로 구현됩니다. 보안 수준에 따라, 대단히 민감한 통신의 경우 SSH 키 쌍을 한 번만 사용할 수도 있습니다. 이렇게 하면 저장된 키 때문에 발생하는 모든 위험을 제거할 수 있습니다. 하지만 SSH 보안 인증을 일정 기간 보관하고, SFTP 사용자에게 과도한 부담을 주지 않는 주기를 설정하는 방법이 더 보편적입니다. 가장 일반적인 주기는 3개월입니다.

**참고**  
코드형 인프라를 사용한 자동화된 SSH 키 교체는 섹션을 참조하세요[Transfer Family Terraform 모듈](terraform.md).

SSH 키 교체는 2가지 방식으로 실행합니다.
+ 콘솔에서 새 SSH 퍼블릭 키를 업로드하고 기존 SSH 퍼블릭 키를 삭제할 수 있습니다.
+ API를 사용하면 [DeletesSHPublickey](https://docs.aws.amazon.com//transfer/latest/APIReference/API_DeleteSshPublicKey.html) API를 사용하여 사용자의 SSH (Secure Shell) 퍼블릭 키를 삭제하고 [ImportSSHPublic Key](https://docs.aws.amazon.com/transfer/latest/APIReference/API_ImportSshPublicKey.html) API를 사용하여 사용자 계정에 새 Secure Shell(SSH) 퍼블릭 키를 추가하여 기존 사용자를 업데이트할 수 있습니다.

------
#### [ Console ]

**콘솔에서 키 로테이션을 수행하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. **서버** 페이지로 이동합니다.

1. **서버 ID** 열에서 식별자를 선택하여 **서버 세부 정보** 페이지를 표시합니다.

1. **사용자**에서 SSH 퍼블릭 키를 교체하려는 사용자의 확인란을 선택한 다음 **작업**을 선택하고 **키 추가**를 선택하여 **키 추가** 페이지를 확인합니다.

   또는

   **사용자 세부 정보** 페이지를 보려면 사용자 이름을 선택한 다음 **SSH 퍼블릭 키 추가**를 선택하여 **키 추가** 페이지를 확인합니다.

1. 새 SSH 퍼블릭 키를 입력하고 **키 추가**를 선택합니다.
**중요**  
SSH 퍼블릭 키의 형식은 생성한 키 타입에 따라 다릅니다.  
RSA 키의 경우, 그 형식은 `ssh-rsa {{string}}`입니다.
ED25519 키의 경우, 그 형식은 `ssh-ed25519 {{string}}`입니다.
ECDSA 키의 경우, 키는 생성한 키 크기에 따라 `ecdsa-sha2-nistp256`, `ecdsa-sha2-nistp384`, 또는 `ecdsa-sha2-nistp521`(으)로 시작합니다. 그런 다음 다른 키 타입과 마찬가지로 시작 문자열 뒤에 `{{string}}`이(가) 옵니다.

   **사용자 세부 정보** 페이지로 돌아오면 방금 입력한 새 SSH 퍼블릭 키가 **SSH 퍼블릭 키** 섹션에 표시됩니다.

1. 삭제할 보안 인증 옆의 확인란을 선택하고 **삭제**를 선택합니다.

1. 단어 `delete`를 입력하여 삭제 작업을 확인한 다음 **삭제**를 선택합니다.

------
#### [ API ]

**API를 사용하여 키 로테이션을 수행하려면**

1. macOS, Linux 또는 Unix 작동 시스템에서는 명령 터미널을 엽니다.

1.  다음 명령을 입력하여 삭제하려는 SSH 키를 검색합니다. 이 명령을 사용하려면, `{{serverID}}`를 Transfer Family 서버의 서버 ID로 바꾸고 `{{username}}`를 사용자 이름으로 바꾸세요. 

   ```
   aws transfer describe-user --server-id='{{serverID}}' --user-name='{{username}}'
   ```

   이 명령은 사용자에 대한 세부 정보를 반환합니다. `"SshPublicKeyId":` 필드 내용을 복사합니다. 이 값은 이 절차의 뒷부분에서 입력해야 합니다.

   ```
   "SshPublicKeys": [ { "SshPublicKeyBody": "{{public-key}}", "SshPublicKeyId": "{{keyID}}",
      "DateImported": 1621969331.072 } ],
   ```

1.  다음으로, 사용자의 새 SSH 키를 가져옵니다. 프롬프트에 다음 명령을 입력합니다. 이 명령을 사용하려면 `{{serverID}}`를 Transfer Family 서버의 서버 ID로 바꾸고 `{{username}}`를 사용자 이름으로 바꾸고 `{{public-key}}`를 새 퍼블릭 키의 지문으로 바꾸세요. 

   ```
   aws transfer import-ssh-public-key --server-id='{{serverID}}' --user-name='{{username}}'
      --ssh-public-key-body='{{public-key}}'
   ```

   ``이 명령이 성공하면 출력이 반환되지 않습니다.

1.  마지막으로 다음 명령을 실행하여 이전 키를 삭제합니다. 이 명령을 사용하려면 `{{serverID}}`를 Transfer Family 서버의 서버 ID로 바꾸고 `{{username}}`를 사용자 이름으로 바꾸고 `{{keyID-from-step-2}}`를 이 절차의 2단계에서 복사한 키 ID 값으로 바꾸세요. 

   ```
   aws transfer delete-ssh-public-key --server-id='{{serverID}}' --user-name='{{username}}'
      --ssh-public-key-id='{{keyID-from-step-2}}'
   ```

1. (옵션) 이전 키가 더 이상 존재하지 않는지 확인하려면 2단계를 반복합니다.

------