

# EC2 인스턴스에 연결
<a name="connect"></a>

Amazon EC2 인스턴스는 AWS 클라우드에 있는 가상 서버입니다. 인스턴스에 로그인하려면 인스턴스 연결을 설정해야 합니다. 인스턴스에 연결하는 방법은 인스턴스의 운영 체제와 인스턴스에 연결하는 데 사용하는 컴퓨터의 운영 체제에 따라 다릅니다. 다음 표에서는 각 연결 방법의 요구 사항에 대해 자세히 설명합니다.


| 연결 옵션 | 인스턴스 운영 체제 | 인바운드 트래픽 규칙 | IAM 권한 | 인스턴스 프로파일 역할 | 인스턴스의 소프트웨어 | 연결 시스템의 소프트웨어 | 키 페어 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  SSH 클라이언트  |  Linux  |  예  |  아니요  |  아니요  |  아니요  |  예  |  예  | 
|  EC2 Instance Connect  |  Linux  |  예  |  예  |  아니요  |  예 ¹  |  아니요  |  아니요  | 
| PuTTY |  Linux  |  예  |  아니요  |  아니요  |  아니요  |  예  |  예  | 
| RDP 클라이언트 |  Windows  |  예  |  아니요  |  아니요  |  아니요  |  예  |  예 ²  | 
| Fleet Manager |  Windows  |  아니요  |  예  |  예  |  예 ¹  |  아니요  |  예  | 
| 세션 관리자 |  Linux, Windows  |  아니요  |  예  |  예  |  예 ¹  |  아니요  |  아니요  | 
| EC2 Instance Connect 엔드포인트 |  Linux, Windows  |  예  |  예  |  아니요  |  아니요  |  아니요  |  아니요³  | 

¹ 필수 소프트웨어는 특정 AMI에만 사전 설치되어 있습니다. 지원되는 운영 체제에 필수 소프트웨어를 필요에 따라 수동으로 설치할 수 있습니다.

² 키 페어는 로컬 관리자 사용자 계정에 무작위로 생성된 비밀번호를 사용하는 경우에만 필요합니다.

³ SSH 연결 방법을 사용하는 경우 키 페어가 필요합니다.

자세한 내용은 사용하려는 연결 옵션에 대한 설명서를 참조하세요.

**연결 옵션**
+ [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md)
+ [PuTTY를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-from-windows.md)
+ [RDP 클라이언트를 사용하여 Windows 인스턴스에 연결](connect-rdp.md)
+ [Fleet Manager를 사용하여 Windows 인스턴스에 연결](connect-rdp-fleet-manager.md)
+ [세션 관리자를 사용하여 연결](connect-with-systems-manager-session-manager.md)
+ [퍼블릭 IP 및 EC2 Instance Connect를 사용하여 연결](connect-linux-inst-eic.md)
+ [프라이빗 IP 및 EC2 Instance Connect 엔드포인트를 사용하여 연결](connect-with-ec2-instance-connect-endpoint.md)

# 일반 연결 사전 조건
<a name="connection-prereqs-general"></a>

다음은 인스턴스에 연결하기 위한 일반적인 사전 조건입니다. 선택한 연결 옵션과 관련된 추가 사전 조건이 있을 수 있습니다.

**일반적인 사전 요구 사항**
+ 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
+ [필수 인스턴스 세부 정보 가져오기](#connection-prereqs-get-info-about-instance).
+ [프라이빗 키 찾기 및 권한 설정](#connection-prereqs-private-key).
+ [(선택 사항) 인스턴스 지문 가져오기](#connection-prereqs-fingerprint).

## 필수 인스턴스 세부 정보 가져오기
<a name="connection-prereqs-get-info-about-instance"></a>

인스턴스 연결을 준비하려면 Amazon EC2 콘솔에서 또는 명령줄을 사용하여 다음 정보를 확인하세요.

![\[Amazon EC2 콘솔의 인스턴스 창.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/connection-prereqs-console2.png)

+ **인스턴스의 퍼블릭 DNS 이름을 가져옵니다.**

  Amazon EC2 콘솔에서 인스턴스의 퍼블릭 DNS를 가져올 수 있습니다. **인스턴스** 창의 **퍼블릭 IPv4 DNS** 열을 확인합니다. 이 열이 숨겨져 있는 경우 화면의 오른쪽 위에서 설정 아이콘(![\[The gear icon.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/settings-icon.png))을 선택하고 **퍼블릭 IPv4 DNS**를 선택합니다. **인스턴스** 창의 인스턴스 정보 섹션에서도 퍼블릭 DNS를 찾을 수 있습니다. Amazon EC2 콘솔의 **인스턴스** 창에서 인스턴스를 선택하면 해당 인스턴스에 대한 정보가 페이지 하단에 표시됩니다. **세부 정보** 탭에서 **퍼블릭 IPv4 DNS**를 찾습니다.

  원하는 경우 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)(AWS CLI) 또는 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html)(AWS Tools for Windows PowerShell) 명령을 사용할 수 있습니다.

  **퍼블릭 IPv4 DNS**가 표시되지 않는 경우 **인스턴스 상태**가 **실행 중**이고 프라이빗 서브넷에서 인스턴스를 시작하지 않았는지 확인합니다. [인스턴스 시작 마법사](ec2-launch-instance-wizard.md)를 사용하여 인스턴스를 시작한 경우 **네트워크 설정**에서 **퍼블릭 IP 자동 할당** 필드를 편집하고 값을 **비활성화**로 변경했을 수 있습니다. **퍼블릭 IP 자동 할당** 옵션을 비활성화하면 시작 시 인스턴스에 퍼블릭 IP 주소가 할당되지 않습니다.
+ **(IPv6 전용 인스턴스) 인스턴스의 IPv6 주소를 가져옵니다.**

  인스턴스에 IPv6 주소를 할당했다면 퍼블릭 IPv4 주소나 퍼블릭 IPv4 DNS 호스트 이름 대신 IPv6 주소를 사용하여 인스턴스에 연결할 수도 있습니다. 로컬 컴퓨터에 IPv6 주소가 있고 IPv6를 사용하도록 컴퓨터를 구성해야 합니다. Amazon EC2 콘솔에서 인스턴스의 IPv6 주소를 가져올 수 있습니다. **인스턴스** 창의 **IPv6 IP** 열을 확인합니다. 또는 인스턴스 정보 섹션에서 IPv6 주소를 찾을 수 있습니다. Amazon EC2 콘솔의 **인스턴스** 창에서 인스턴스를 선택하면 해당 인스턴스에 대한 정보가 페이지 하단에 표시됩니다. **세부 정보** 탭에서 **IPv6 주소**를 찾습니다.

  원하는 경우 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)(AWS CLI) 또는 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html)(AWS Tools for Windows PowerShell) 명령을 사용할 수 있습니다. IPv6에 대한 자세한 내용은 [IPv6 주소](using-instance-addressing.md#ipv6-addressing) 섹션을 참조하세요.
+ **(Linux 인스턴스) 인스턴스의 사용자 이름을 가져옵니다.**

  사용자 계정의 사용자 이름 또는 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용하여 인스턴스에 연결할 수 있습니다.
  + **사용자 계정의 사용자 이름을 가져옵니다.**

    사용자 계정을 생성하는 방법에 대한 자세한 내용은 [Amazon EC2 Linux 인스턴스에서 시스템 사용자 관리](managing-users.md) 섹션을 참조하세요.
  + **인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 가져옵니다.**
    + **Amazon Linux** – `ec2-user`
    + **CentOS** – `centos` 또는 `ec2-user`
    + **Debian** – `admin`
    + **Fedora** – `fedora` 또는 `ec2-user`
    + **FreeBSD** – `ec2-user`
    + **RHEL** – `ec2-user` 또는 `root`
    + **SUSE** – `ec2-user` 또는 `root`
    + **Ubuntu** – `ubuntu`
    + **Oracle** – `ec2-user`
    + **Bitnami** – `bitnami`
    + **Rocky Linux** – `rocky`
    + **기타** - AMI 제공업체에 문의

## 프라이빗 키 찾기 및 권한 설정
<a name="connection-prereqs-private-key"></a>

SSH를 사용하는 Linux 인스턴스 또는 RDP를 사용하는 Windows 인스턴스에 초기 연결을 설정하려면 프라이빗 키 파일의 위치를 알아야 합니다. SSH 연결의 경우 사용자만 프라이빗 키를 읽을 수 있도록 파일 권한을 설정해야 합니다.

Amazon EC2를 사용할 때 키 페어가 작동하는 방식에 대한 자세한 내용은 [Amazon EC2 키 페어 및 Amazon EC2 인스턴스](ec2-key-pairs.md) 섹션을 참조하세요.
+ **프라이빗 키를 찾습니다.**

  인스턴스를 시작할 때 지정한 키 페어를 찾기 위해 `.pem` 파일의 컴퓨터 상 위치에 대한 정규화된 경로를 얻습니다. 자세한 내용은 [시작 시 지정된 퍼블릭 키 식별](describe-keys.md#identify-key-pair-specified-at-launch) 섹션을 참조하세요.

  프라이빗 키 파일을 찾을 수 없는 경우 [프라이빗 키를 분실했습니다. 인스턴스에 연결하려면 어떻게 해야 하나요?](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair) 섹션을 참조하세요.

  (Linux 인스턴스) PuTTY를 사용하여 인스턴스에 연결하고 `.pem` 파일을 `.ppk`로 변환해야 하는 경우 [PuTTYgen을 사용하여 프라이빗 키 변환](connect-linux-inst-from-windows.md#putty-private-key)의 내용을 참조하세요.
+ **(Linux 인스턴스) 사용자만 읽을 수 있도록 프라이빗 키의 권한을 설정하세요.**
  + **macOS 또는 Linux에서 연결**

    macOS 또는 Linux 컴퓨터에서 SSH 클라이언트를 사용하여 Linux 인스턴스에 연결할 계획이면 사용자만 프라이빗 키 파일을 읽을 수 있도록 다음 명령으로 해당 권한을 설정합니다.

    ```
    chmod 400 key-pair-name.pem
    ```

    이러한 권한을 설정하지 않으면 이 키 페어를 사용하여 인스턴스에 연결할 수 없습니다. 자세한 내용은 [오류: 보호되지 않는 프라이빗 키 파일](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key) 섹션을 참조하세요.
  + **Windows에서 연결**

    파일 탐색기를 열고 `.pem` 파일을 마우스 오른쪽 버튼으로 클릭합니다. **속성** > **보안 탭**을 선택하고 **고급**을 선택합니다. **상속 비활성화**를 선택합니다. 현재 사용자를 제외한 모든 사용자에 대한 액세스 권한을 제거합니다.

## (선택 사항) 인스턴스 지문 가져오기
<a name="connection-prereqs-fingerprint"></a>

중간자 공격으로부터 보호하려면 표시되는 지문을 확인하여 연결하려는 인스턴스의 신뢰성을 확인합니다. 지문 확인 기능은 타사가 제공한 퍼블릭 AMI에서 인스턴스를 시작하는 경우 유용합니다.

**태스크 개요**  
먼저 인스턴스에서 인스턴스 지문을 가져옵니다. 인스턴스에 연결할 때 지문을 확인하라는 메시지가 표시되면 이 절차에서 가져온 지문을 표시된 지문을 비교합니다. 이들 지문이 일치하지 않으면 누군가가 메시지 가로채기(man-in-the-middle) 공격을 시도하고 있는 것일 수 있습니다. 이 두 지문이 일치하면 확실하게 인스턴스에 연결할 수 있습니다.

**인스턴스 지문 가져오기를 위한 사전 조건**
+ 인스턴스는 `pending` 상태가 아니어야 합니다. 지문은 인스턴스의 첫 번째 부팅이 완료된 후에만 사용할 수 있습니다.
+ 콘솔 출력을 가져오려면 인스턴스 소유자여야 합니다.
+ 인스턴스 지문을 가져오는 방법은 여러 가지가 있습니다. AWS CLI를 사용하려면 먼저 로컬 컴퓨터에 설치해야 합니다. AWS CLI의 설치에 대한 자세한 내용은 *AWS Command Line Interface 사용 안내서의* [AWS CLI 시작하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 섹션을 참조하세요.

**인스턴스 지문을 가져오려면**

1단계에서는 인스턴스 지문이 포함된 콘솔 출력을 가져옵니다. 2단계에서는 콘솔 출력에서 인스턴스 지문을 찾습니다.

1. 다음 방법 중 하나를 사용하여 콘솔 출력을 가져옵니다.

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

   1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

   1. 왼쪽 탐색 창에서 **인스턴스**를 선택합니다.

   1. 인스턴스를 선택하고 **작업**, **모니터링 및 문제 해결**, **시스템 로그 가져오기**를 차례로 선택합니다.

------
#### [ AWS CLI ]

   연결 중이 아닌 로컬 컴퓨터에서 [get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) 명령을 사용합니다. 출력이 큰 경우 출력을 읽기 쉬운 [텍스트 파일로 파이핑](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output-format.html)할 수 있습니다.

   ```
   aws ec2 get-console-output \
       --instance-id i-1234567890abcdef0 \
       --query Output \
       --output text > temp.txt
   ```

------
#### [ PowerShell ]

   로컬 컴퓨터에서 다음 [Get-EC2ConsoleOutput](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleOutput.html) cmdlet을 사용합니다.

   ```
   $encodedOutput = (Get-EC2ConsoleOutput -InstanceId i-1234567890abcdef0).Output
   [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedOutput))
   ```

------

1. 콘솔 출력에서 `BEGIN SSH HOST KEY FINGERPRINTS` 아래에 있는 인스턴스(호스트) 지문을 찾습니다. 인스턴스 지문이 여러 개 있을 수 있습니다. 인스턴스에 연결하면 지문 중 하나만 표시됩니다.

   정확한 출력은 운영 체제, AMI 버전, AWS에서 키 페어를 생성했는지 여부에 따라 다를 수 있습니다. 다음은 예제 출력입니다.

   ```
   ec2:#############################################################
   ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
   ec2: 256 SHA256:l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY no comment (ECDSA)
   ec2: 256 SHA256:kpEa+rw/Uq3zxaYZN8KT501iBtJOIdHG52dFi66EEfQ no comment (ED25519)
   ec2: 2048 SHA256:L8l6pepcA7iqW/jBecQjVZClUrKY+o2cHLI0iHerbVc no comment (RSA)
   ec2: -----END SSH HOST KEY FINGERPRINTS-----
   ec2: #############################################################
   ```
**참고**  
인스턴스에 연결할 때 이 지문을 참조합니다.

# SSH를 사용하여 Linux 인스턴스에 연결
<a name="connect-to-linux-instance"></a>

SSH를 사용하여 Linux 인스턴스에 연결하는 방법에는 여러 가지가 있습니다. 일부는 연결하는 로컬 컴퓨터의 운영 체제에 따라 달라집니다. 다른 방법은 EC2 Instance Connect 또는 AWS Systems Manager Session Manager와 같은 브라우저 기반이며 모든 컴퓨터에서 사용할 수 있습니다. SSH를 사용하여 Linux 인스턴스에 연결하고 명령을 실행하거나 SSH를 사용하여 로컬 컴퓨터와 인스턴스 간에 파일을 전송할 수 있습니다.

SSH를 사용하여 Linux 인스턴스에 연결하려면 먼저 다음 사전 조건을 완료하세요.
+ 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
+ 인스턴스와 연관된 보안 그룹이 IP 주소로부터 들어오는 SSH 트래픽을 허용하는지 확인하세요. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.
+ [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [프라이빗 키 찾기 및 권한 설정](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint).

그런 후에 다음 옵션 중 하나를 선택하고 SSH를 사용하여 Linux 인스턴스에 연결합니다.
+ [SSH 클라이언트를 사용하여 연결](connect-linux-inst-ssh.md)
+ [PuTTY를 사용한 연결](connect-linux-inst-from-windows.md) 
+ [SCP를 사용하여 파일 전송](linux-file-transfer-scp.md)

인스턴스에 연결할 수 없고 문제 해결에 도움이 필요한 경우 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md)의 내용을 참조하세요.

# SSH 클라이언트를 사용하여 Linux 인스턴스에 연결
<a name="connect-linux-inst-ssh"></a>

Secure Shell(SSH)을 사용하여 로컬 컴퓨터에서 Linux 인스턴스에 연결할 수 있습니다. 기타 옵션에 대한 자세한 내용은 [EC2 인스턴스에 연결](connect.md)의 내용을 참조하세요.

**참고**  
인스턴스에 연결하려고 시도하는 동안 오류가 발생하는 경우 인스턴스가 모든 [SSH 연결 사전 조건](#ssh-prereqs-linux-from-linux-macos)을(를) 충족하는지 확인하세요. 모든 사전 조건을 충족하는데도 여전히 Linux 인스턴스에 연결할 수 없는 경우 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md)을(를) 참조하세요.

**Topics**
+ [SSH 연결 사전 조건](#ssh-prereqs-linux-from-linux-macos)
+ [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](#connect-linux-inst-sshClient)

## SSH 연결 사전 조건
<a name="ssh-prereqs-linux-from-linux-macos"></a>

SSH를 사용하여 Linux 인스턴스에 연결하려면 먼저 다음 작업을 완료하세요.

**일반적인 사전 조건을 완료하세요.**  
+ 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
+ [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [프라이빗 키 찾기 및 권한 설정](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP 주소에서의 인바운드 SSH 트래픽을 허용합니다.**  
인스턴스와 연관된 보안 그룹이 IP 주소로부터 들어오는 SSH 트래픽을 허용하는지 확인하세요. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.

**(필요한 경우) 로컬 컴퓨터에 SSH 클라이언트를 설치합니다.**  
로컬 컴퓨터에 기본적으로 SSH 클라이언트가 설치되어 있을 수 있습니다. 터미널 창에 다음 명령을 입력하여 이를 확인할 수 있습니다. 컴퓨터가 명령을 인식하지 않는다면 SSH 클라이언트를 설치해야 합니다.  

```
ssh
```
다음은 Windows에서 사용할 수 있는 몇 가지 옵션입니다. 컴퓨터가 다른 운영 체제를 실행하는 경우 해당 운영 체제 설명서에서 SSH 클라이언트 옵션을 참조하세요.

## Windows에서 OpenSSL 설치
<a name="openssh"></a>

Windows에서 OpenSSH를 설치한 후 SSH를 사용하여 Windows 컴퓨터에서 Linux 인스턴스에 연결할 수 있습니다. 시작하기 전에 다음 요구 사항을 충족하는지 확인하세요.

**Windows 버전**  
컴퓨터의 Windows 버전이 Windows Server 2019 이후 버전이어야 합니다.  
이전 버전의 경우 [Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki)를 다운로드하고 설치하세요.

**PowerShell 요구 사항**  
PowerShell을 사용하여 Windows OS에 OpenSSH를 설치하려면 PowerShell 버전 5.1 이상을 실행해야 하며 계정은 기본 제공 관리자 그룹의 멤버여야 합니다. PowerShell에서 `$PSVersionTable.PSVersion`을 실행하여 PowerShell 버전을 확인합니다.  
기본 제공 관리자 그룹의 멤버인지 확인하려면 다음 PowerShell 명령을 실행합니다.  

```
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
```
기본 제공 관리자 그룹의 멤버인 경우 출력은 `True`입니다.

PowerShell을 사용하여 Windows용 OpenSSH를 설치하려면 다음 PowerShell 명령을 실행합니다.

```
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

출력의 예시는 다음과 같습니다.

```
Path          :
Online        : True
RestartNeeded : False
```

PowerShell을 사용하여 Windows에서 OpenSSH를 제거하려면 다음 PowerShell 명령을 실행합니다.

```
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

출력의 예시는 다음과 같습니다.

```
Path          :
Online        : True
RestartNeeded : True
```

## Windows Subsystem for Linux(WSL) 설치
<a name="WSL"></a>

Windows에서 WSL을 설치한 후 SSH 클라이언트와 같은 Linux 명령줄 도구를 사용하여 Windows 컴퓨터에서 Linux 인스턴스에 연결할 수 있습니다.

[EC2 Windows 인스턴스에 Windows Subsystem for Linux 설치](install-wsl-on-ec2-windows-instance.md)의 지침을 따르세요. Microsoft의 설치 설명서의 지침을 따르면 Linux의 Ubuntu 배포판이 설치됩니다. 원하는 경우 다른 Linux 배포판을 설치할 수 있습니다.

WSL 터미널 창에서 인스턴스 시작 시 지정한 키 페어에 대한 `.pem` 파일을 Windows에서 WSL로 복사합니다. 인스턴스에 연결할 때는 WSL에서 `.pem` 파일의 정규화된 경로를 확인하세요. Windows 하드 드라이브로 가는 경로의 지정 방식은 [C 드라이브 액세스 방법](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-access-my-c--drive-)을 참고하십시오.

```
cp /mnt/<Windows drive letter>/path/my-key-pair.pem ~/WSL-path/my-key-pair.pem
```

Windows Subsystem for Linux의 제거 방법은 [WSL 배포 제거 방법](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-uninstall-a-wsl-distribution-)을 참조하세요.

## SSH 클라이언트를 사용하여 Linux 인스턴스에 연결
<a name="connect-linux-inst-sshClient"></a>

SSH 클라이언트를 사용하여 Linux 인스턴스에 연결하려면 다음 프로시저를 사용하세요.

**SSH 클라이언트를 사용하여 인스턴스에 연결**

1. 컴퓨터에서 터미널 창을 엽니다.

1. **ssh** 명령을 사용하여 인스턴스에 연결합니다. 사전 조건의 일부로 수집한 인스턴스에 대한 세부 정보가 필요합니다. 예를 들어 프라이빗 키(`.pem` 파일)의 위치, 사용자 이름 및 퍼블릭 DNS 이름 또는 IPv6 주소가 필요합니다. 다음은 예제 명령입니다.
   + (퍼블릭 DNS) 퍼블릭 DNS 이름을 사용하려면 다음 명령을 입력합니다.

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
     ```
   + (IPv6) 또는 인스턴스에 IPv6 주소가 있는 경우 다음 명령을 입력하여 IPv6 주소를 사용합니다.

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@2001:db8::1234:5678:1.2.3.4
     ```

   다음은 응답의 예입니다.

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
   ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
   Are you sure you want to continue connecting (yes/no)?
   ```

1. (선택 사항) 보안 알림의 지문이 일치하는지 확인합니다. 이들 지문이 일치하지 않으면 누군가가 메시지 가로채기(man-in-the-middle) 공격을 시도하고 있는 것일 수 있습니다. 이들 지문이 일치하면 다음 단계를 계속 진행합니다. 자세한 내용은 [인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint)를 참조하세요.

1. **yes**를 입력합니다.

   다음과 같은 응답이 표시됩니다:

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (ECDSA) to the list of known hosts.
   ```

# PuTTY를 사용하여 Linux 인스턴스에 연결
<a name="connect-linux-inst-from-windows"></a>

Windows용 무료 SSH 클라이언트인 PuTTY를 사용하여 Linux 인스턴스에 연결할 수 있습니다.

Windows Server 2019 이후 버전을 실행하는 경우 SSH 프로토콜을 사용한 원격 로그인을 위한 오픈 소스 연결 도구인 OpenSSH를 사용하는 것이 좋습니다.

**참고**  
인스턴스에 연결하려고 시도하는 동안 오류가 발생하는 경우 인스턴스가 모든 [SSH 연결 사전 조건](connect-linux-inst-ssh.md#ssh-prereqs-linux-from-linux-macos)을(를) 충족하는지 확인하세요. 모든 사전 조건을 충족하는데도 여전히 Linux 인스턴스에 연결할 수 없는 경우 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md)을(를) 참조하세요.

**Topics**
+ [사전 조건](#putty-prereqs)
+ [PuTTYgen을 사용하여 프라이빗 키 변환](#putty-private-key)
+ [Linux 인스턴스에 연결합니다](#putty-ssh)

## 사전 조건
<a name="putty-prereqs"></a>

PuTTY를 사용하여 Linux 인스턴스에 연결하려면 먼저 다음 작업을 완료하세요.

**일반적인 사전 조건을 완료하세요.**  
+ 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
+ [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [프라이빗 키 찾기 및 권한 설정](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP 주소에서의 인바운드 SSH 트래픽을 허용합니다.**  
인스턴스와 연관된 보안 그룹이 IP 주소로부터 들어오는 SSH 트래픽을 허용하는지 확인하세요. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.

**(필요한 경우) 로컬 컴퓨터에 PuTTY를 설치합니다.**  
PuTTY를 [PuTTY 다운로드 페이지에서](https://www.chiark.greenend.org.uk/~sgtatham/putty/) 다운로드하고 설치합니다. 이전 버전의 PuTTY가 이미 설치되어 있는 경우 최신 버전을 다운로드하는 것이 좋습니다. 전체 제품군을 설치해야 합니다.

**PuTTYgen을 사용하여 프라이빗 키를 PPK 형식으로 변환합니다.**  
인스턴스를 시작할 때 지정한 키 페어에 대한 프라이빗 키를 지정해야 합니다. .pem 형식으로 프라이빗 키를 생성한 경우 PuTTY에서 사용할 PPK 파일로 변환해야 합니다. 프라이빗 키(.pem 파일)를 찾은 후 [PuTTYgen을 사용하여 프라이빗 키 변환](#putty-private-key)의 단계를 따릅니다.

## (선택 사항) PuTTYgen을 사용하여 프라이빗 키 변환
<a name="putty-private-key"></a>

PuTTY는 SSH 키의 PEM 형식을 기본적으로 지원하지 않습니다. PuTTY는 PuTTY에 필요한 PPK 형식으로 PEM 키를 변환하는 PuTTYgen이라는 도구를 제공합니다. PPK 형식 대신 PEM 형식을 사용하여 키를 생성한 경우 PuTTY에서 사용할 형식(.ppk 파일)으로 프라이빗 키(.pem 파일)를 변환해야 합니다.

**프라이빗 키를 PEM에서 PPK 형식으로 변환**

1. **시작** 메뉴에서 **모든 프로그램**, **PuTTY**, **PuTTYgen**을 선택합니다.

1. **Type of key to generate(생성할 키 유형)**에서 **RSA**를 선택합니다. PuTTYgen 버전에 이 옵션이 포함되어 있지 않으면 **SSH-2 RSA**를 선택합니다.  
![\[PuTTYgen의 RSA 키입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/puttygen-key-type.png)

1. **로드(Load)**를 선택합니다. 기본적으로 PuTTYgen에는 확장명이 `.ppk`인 파일만 표시됩니다. `.pem` 파일을 찾으려면 모든 유형의 파일을 표시하는 옵션을 선택합니다.  
![\[모든 파일 유형을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/puttygen-load-key.png)

1. 인스턴스를 시작할 때 지정한 키 페어에 대한 `.pem` 파일을 선택한 다음 **열기**를 선택합니다. PuTTYgen에 `.pem` 파일을 성공적으로 가져왔다는 알림이 표시됩니다. **확인**을 선택합니다.

1. PuTTY에서 사용할 수 있는 형식으로 키를 저장하려면 [**프라이빗 키 저장(Save private key)**]을 선택합니다. PuTTYgen에서 암호 없이 키 저장에 대한 경고가 표시됩니다. **예**를 선택합니다.
**참고**  
프라이빗 키의 암호는 추가 보호 계층입니다. 프라이빗 키가 노출되더라도 암호 없이 사용할 수 없습니다. 암호문 사용의 단점은 인스턴스에 로그온하거나 인스턴스에 파일을 복사하기 위해 사용자가 개입해야 하기 때문에 자동화를 어렵게 만든다는 것입니다.

1. 키 페어에 사용한 것과 동일한 키 이름을 지정하고(예: `key-pair-name`) [**저장(Save)**]을 선택합니다. PuTTY가 자동으로 `.ppk` 파일 확장자를 추가합니다.

이제 개인 키가 PuTTY에 사용하기에 올바른 형식으로 되어 있으므로 PuTTY의 SSH 클라이언트를 사용하여 인스턴스에 연결할 수 있습니다.

## Linux 인스턴스에 연결합니다
<a name="putty-ssh"></a>

PuTTY를 사용하여 Linux 인스턴스에 연결하려면 다음 프로시저를 사용하세요. 프라이빗 키에 대해 생성한 `.ppk` 파일이 필요합니다. 자세한 내용은 이전 섹션의 [(선택 사항) PuTTYgen을 사용하여 프라이빗 키 변환](#putty-private-key)를 참조하세요. 인스턴스에 연결을 시도하는 동안 오류가 발생한 경우 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md) 섹션을 참조하세요.

**마지막 테스트 버전** - PuTTY .78

**PuTTY를 사용하여 인스턴스에 연결하려면**

1. PuTTY를 시작합니다(**시작** 메뉴에서 **PuTTY**를 검색한 다음 **열기** 선택).

1. **범주** 창에서 **세션**을 선택하고 다음 필드를 작성합니다.

   1. **호스트 이름** 상자에서 다음 중 하나를 수행합니다.
      + (퍼블릭 DNS) 인스턴스의 퍼블릭 DNS 이름을 사용하여 연결하려면 *instance-user-name*@*instance-public-dns-name*를 입력합니다.
      + (IPv6) 또는 인스턴스에 IPv6 주소가 있는 경우 인스턴스의 IPv6 주소를 사용하여 연결하려면 *instance-user-name*@*2001:db8::1234:5678:1.2.3.4*를 입력합니다.

      인스턴스의 사용자 이름과 인스턴스의 퍼블릭 DNS 이름 또는 IPv6 주소를 가져오는 방법에 대한 자세한 내용은 [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)을(를) 참조하세요.

   1. **Port(포트)** 값이 22인지 확인합니다.

   1. **연결 유형** 아래에서 **SSH**를 선택합니다.  
![\[PuTTY 구성 - 세션입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/putty-session-config.png)

1. (선택 사항) 세션의 활성 상태를 유지하기 위해 일정 간격으로 'keepalive' 데이터를 자동 전송하도록 PuTTY를 구성할 수 있습니다. 이는 세션 비활성으로 인한 인스턴스 연결 해제를 방지하는 데 유용한 기능입니다. **범주** 창에서 **연결**을 선택한 다음, **keepalive 간 초**에 필요한 간격을 입력합니다. 예를 들어 비활성 상태가 되고 10분 후에 세션 연결이 해제되는 경우, 180을 입력하여 3분마다 keepalive 데이터를 전송하도록 PuTTY를 구성합니다.

1. **범주** 창에서 **연결**, **SSH** 및 **Auth**를 확장합니다. **자격 증명**을 선택합니다.

1. **인증을 위한 프라이빗 키 파일** 옆에서 **찾아보기**를 선택합니다. **프라이빗 키 파일 선택** 대화 상자에서 키 페어에 대해 생성한 `.ppk` 파일을 선택합니다. 파일을 두 번 클릭하거나 **프라이빗 키 파일 선택** 대화 상자에서 **열기**를 선택할 수 있습니다.

1. (선택 사항) 이 세션 후에 이 인스턴스에 다시 연결하려는 경우 나중에 사용할 수 있도록 세션 정보를 저장할 수 있습니다. **범주** 창에서 **세션**을 선택합니다. **저장된 세션**에 세션 이름을 입력한 다음 **저장**을 선택합니다.

1. 인스턴스에 연결하려면 **열기**를 선택합니다.

1. 이 인스턴스에 처음 연결한 경우 PuTTY에서 연결하려는 호스트를 신뢰할 수 있는지 묻는 보안 알림 대화 상자가 표시됩니다.

   1. (선택 사항) 보안 알림 대화 상자의 지문이 앞의 [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint)에서 얻은 지문과 일치하는지 확인합니다. 이들 지문이 일치하지 않으면 누군가가 "메시지 가로채기(man-in-the-middle)" 공격을 시도하고 있는 것일 수 있습니다. 이들 지문이 일치하면 다음 단계를 계속 진행합니다.

   1. **수락**을 선택합니다. 창이 열리고 인스턴스에 연결됩니다.
**참고**  
개인 키를 PuTTY 형식으로 변환할 때 암호문을 지정한 경우 인스턴스에 로그인할 때 암호문을 제공해야 합니다.

인스턴스에 연결을 시도하는 동안 오류가 발생한 경우 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md) 섹션을 참조하세요.

# SCP를 사용하여 Linux 인스턴스로 파일 전송
<a name="linux-file-transfer-scp"></a>

로컬 컴퓨터와 Linux 인스턴스 간에 파일을 전송하는 한 가지 방법은 SCP(Secure Copy Protocol)를 사용하는 것입니다. SCP는 일회성 파일 복사 등 간단한 작업에 적합한 옵션입니다. SCP는 SSH를 사용한 인스턴스 연결에 사용하는 것과 동일한 .pem 파일을 사용하여 파일 전송을 보호합니다. 파일을 동기화된 상태로 유지해야 하거나 파일이 큰 경우 **rsync**가 SCP보다 빠르고 효율적입니다. **rsync**는 기본적으로 일반 텍스트를 사용하여 데이터를 전송하므로 보안을 위해서는 SSH보다 **rsync**를 사용하세요.

SCP를 사용하여 Linux 인스턴스에 연결하려면 먼저 다음 작업을 완료하세요.
+ **일반적인 사전 조건을 완료하세요.**
  + 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
  + [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [프라이빗 키 찾기 및 권한 설정](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **IP 주소에서의 인바운드 SSH 트래픽을 허용합니다.**

  인스턴스와 연관된 보안 그룹이 IP 주소로부터 들어오는 SSH 트래픽을 허용하는지 확인하세요. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.
+ **SCP 클라이언트를 설치합니다.**

  대부분의 Linux, Unix 및 Apple 컴퓨터에는 기본적으로 SCP 클라이언트가 포함되어 있습니다. 그렇지 않은 경우, OpenSSH 프로젝트는 SCP 클라이언트를 포함하는 전체 SSH 도구의 무료 구현을 제공합니다. 자세한 내용은 [https://www.openssh.com](https://www.openssh.com)을 참조하세요.

다음 절차에서는 인스턴스의 퍼블릭 DNS 이름, 또는 인스턴스에 있는 경우 IPv6 주소를 사용하여 SCP를 사용하는 파일 전송 단계를 안내합니다.

**SCP를 사용하여 컴퓨터와 인스턴스 사이에서 파일을 전송하려면**

1. 컴퓨터의 소스 파일 위치와 인스턴스의 대상 경로를 확인합니다. 다음 예제에서 프라이빗 키 파일의 이름은 `key-pair-name.pem`, 전송할 파일은 `my-file.txt`, 인스턴스에 대한 사용자 이름은 ec2-user, 인스턴스의 퍼블릭 DNS는 `instance-public-dns-name`, 인스턴스의 IPv6 주소를 `2001:db8::1234:5678:1.2.3.4`입니다.
   + (퍼블릭 DNS) 인스턴스의 대상으로 파일을 전송하려면 컴퓨터에서 다음 명령을 입력합니다.

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@instance-public-dns-name:path/
     ```
   + (IPv6) 인스턴스에 IPv6 주소가 있는 경우 인스턴스의 대상으로 파일을 전송하려면 컴퓨터에서 다음 명령을 입력합니다. IPv6 주소는 이스케이프된(`[ ]`) 대괄호(`\`)로 묶어야 합니다.

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/
     ```

1. SSH를 사용하여 인스턴스에 아직 연결하지 않은 경우 다음과 같은 응답이 표시됩니다.

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
   can't be established.
   RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
   Are you sure you want to continue connecting (yes/no)?
   ```

   (선택 사항) 보안 알림의 지문이 인스턴스 지문과 일치하는지 확인할 수 있습니다. 자세한 내용은 [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint) 섹션을 참조하세요.

   **yes**를 입력합니다.

1. 전송이 성공한 경우 다음과 유사한 응답이 표시됩니다.

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
   to the list of known hosts.
   my-file.txt                                100%   480     24.4KB/s   00:00
   ```

1. 반대 방향으로(Amazon EC2 인스턴스에서 로컬 컴퓨터로) 파일을 전송하려면 호스트 파라미터의 순서를 역순으로 지정하면 됩니다. 예를 들어 다음 예시와 같이 EC2 인스턴스에서 `my-file.txt`를 로컬 컴퓨터의 대상에서 `my-file2.txt`로 전송할 수 있습니다.
   + (퍼블릭 DNS) 컴퓨터의 대상으로 파일을 전송하려면 컴퓨터에서 다음 명령을 입력합니다.

     ```
     scp -i /path/key-pair-name.pem ec2-user@instance-public-dns-name:path/my-file.txt path/my-file2.txt
     ```
   + (IPv6) 컴퓨터에 IPv6 주소가 있는 경우 인스턴스의 대상으로 파일을 전송하려면 컴퓨터에서 다음 명령을 입력합니다. IPv6 주소는 이스케이프된(`[ ]`) 대괄호(`\`)로 묶어야 합니다.

     ```
     scp -i /path/key-pair-name.pem ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/my-file.txt path/my-file2.txt
     ```

# Amazon EC2 Linux 인스턴스에서 시스템 사용자 관리
<a name="managing-users"></a>

각 Linux 인스턴스는 기본 Linux 시스템 사용자로 시작됩니다. 인스턴스에 사용자를 추가하고 삭제할 수 있습니다.

기본 사용자의 경우 [기본 사용자 이름](#ami-default-user-names)은 인스턴스를 시작할 때 지정된 AMI에 의해 결정됩니다.

**참고**  
기본적으로 암호 인증 및 루트 로그인은 비활성화되어 있고 sudo는 활성화되어 있습니다. 인스턴스에 로그인하려면 키 페어를 사용해야 합니다. 로그인에 대한 자세한 내용을 알아보려면 [SSH를 사용하여 Linux 인스턴스에 연결](connect-to-linux-instance.md) 섹션을 참조하세요.  
인스턴스에 암호 인증 및 루트 로그인을 사용할 수 있습니다. 자세한 내용은 운영 체제 설명서를 참조하세요.

**참고**  
Linux 시스템 사용자를 IAM 사용자와 혼동해서는 안 됩니다. 자세한 내용은 IAM 사용 설명서**에서 [IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_iam-users)를 참조하세요.

**Topics**
+ [기본 사용자 이름](#ami-default-user-names)
+ [고려 사항](#add-user-best-practice)
+ [사용자 생성](#create-user-account)
+ [사용자 제거](#delete-user-account)

## 기본 사용자 이름
<a name="ami-default-user-names"></a>

EC2 인스턴스의 기본 사용자 이름은 인스턴스를 시작할 때 지정된 AMI에 의해 결정됩니다.

기본 사용자 이름은 다음과 같습니다.
+ Amazon Linux AMI의 경우 사용자 이름은 `ec2-user`입니다.
+ CentOS AMI의 경우 사용자 이름은 `centos` 또는 `ec2-user`입니다.
+ Debian AMI의 경우 사용자 이름은 `admin`입니다.
+ Fedora AMI의 경우 사용자 이름은 `fedora` 또는 `ec2-user`입니다.
+ FreeBSD AMI의 경우 사용자 이름은 `ec2-user`입니다.
+ RHEL AMI의 경우 사용자 이름은 `ec2-user` 또는 `root`입니다.
+ SUSE AMI의 경우 사용자 이름은 `ec2-user` 또는 `root`입니다.
+ Ubuntu AMI의 경우 사용자 이름은 `ubuntu`입니다.
+ Oracle AMI의 경우 사용자 이름은 `ec2-user`입니다.
+ Bitnami AMI의 경우 사용자 이름은 `bitnami`입니다.

**참고**  
다른 Linux 배포에 사용할 기본 사용자 이름을 찾으려면 AMI 제공업체에 문의하세요.

## 고려 사항
<a name="add-user-best-practice"></a>

기본 사용자를 사용하면 많은 애플리케이션에 적합합니다. 그러나 개인이 자신의 파일과 작업 영역을 가질 수 있도록 사용자를 추가하도록 선택할 수 있습니다. 게다가 신규 사용자를 생성하는 방법은 사용이 미숙할 수 있는 여러 사용자에게 기본 사용자 액세스를 허용하는 방법보다 보안상 훨씬 안전합니다. 기본 사용자는 잘못 사용될 경우 시스템에 심각한 손상을 줄 수 있기 때문입니다. 자세한 내용은 [EC2 인스턴스의 보안 유지를 위한 팁](https://aws.amazon.com/articles/tips-for-securing-your-ec2-instance/)을 참조하세요.

Linux 시스템 사용자를 사용하는 EC2 인스턴스에 대한 사용자 SSH 액세스를 활성화하려면 해당 사용자와 SSH 키를 공유해야 합니다. 또는 EC2 인스턴스 연결을 사용하면 SSH 키를 공유하고 관리하지 않아도 사용자에게 액세스 권한을 제공할 수 있습니다. 자세한 내용은 [퍼블릭 IP 주소와 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-eic.md) 섹션을 참조하세요.

## 사용자 생성
<a name="create-user-account"></a>

먼저 사용자를 생성한 다음, 사용자의 연결을 허용하는 SSH 퍼블릭 키를 추가하고 인스턴스에 로그인하세요.

**중요**  
이 절차의 1단계에서는 새 키 페어를 생성합니다. 키 페어는 암호와 같은 기능을 하기 때문에 안전하게 처리하는 것이 중요합니다. 사용자를 위한 키 페어를 생성하는 경우 프라이빗 키가 안전하게 전송되도록 해야 합니다. 또는 사용자가 자체 키 페어를 생성하고 프라이빗 키를 컴퓨터에 안전하게 보관한 다음 퍼블릭 키를 보내 3단계의 절차를 완료하여 1단계와 2단계를 완료할 수 있습니다.

**사용자 생성**

1. [새 키 페어를 생성합니다](create-key-pairs.md#having-ec2-create-your-key-pair). 사용자를 생성할 사용자에게 `.pem` 파일을 제공해야 합니다. 이 파일을 사용하여 인스턴스에 연결해야 합니다.

1. 이전 단계에서 생성한 키 페어에서 퍼블릭 키를 검색합니다.

   ```
   $ ssh-keygen -y -f /path_to_key_pair/key-pair-name.pem
   ```

   이 명령은 다음 예제와 같이 퍼블릭 키를 반환합니다.

   ```
   ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6Vhz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXrlsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZqaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3RbBQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   ```

1. 인스턴스에 연결합니다.

1. **adduser** 명령을 사용하여 사용자를 생성하여 `/etc/passwd` 파일의 항목으로 시스템에 추가합니다. 이 명령은 사용자에 대한 그룹과 홈 디렉터리도 생성합니다. 이 예제에서 사용자의 이름은 `newuser`입니다.
   + AL2023 및 Amazon Linux 2

     AL2023 및 Amazon Linux 2에서는 기본적으로 암호 인증이 비활성화된 사용자가 생성됩니다.

     ```
     [ec2-user ~]$ sudo adduser newuser
     ```
   + Ubuntu

     암호 인증이 비활성화된 사용자를 생성하려면 `--disabled-password` 파라미터를 포함합니다.

     ```
     [ubuntu ~]$ sudo adduser newuser --disabled-password
     ```

1. 생성할 디렉터리와 파일이 정확한 소유권을 가질 수 있도록 새 사용자로 전환합니다.

   ```
   [ec2-user ~]$ sudo su - newuser
   ```

   프롬프트가 `ec2-user`에서 `newuser`로 바뀌며 쉘 세션이 새 사용자로 전환된 것을 나타냅니다.

1. 사용자에게 SSH 퍼블릭 키를 추가합니다. 다음 하위 단계에 따라 먼저 사용자의 홈 디렉터리에 SSH 키 파일에 대한 디렉터리를 만든 다음, 키 파일을 만들고 마지막으로 퍼블릭 키를 키 파일에 붙여넣습니다.

   1. `.ssh` 디렉터리를 `newuser` 홈 디렉터리에 만들고 파일 권한을 `700`(소유자만 디렉터리를 읽거나, 쓰거나, 열 수 있음)으로 변경합니다.

      ```
      [newuser ~]$ mkdir .ssh
      ```

      ```
      [newuser ~]$ chmod 700 .ssh
      ```
**중요**  
파일 권한이 정확하지 않으면 사용자가 로그인할 수 없습니다.

   1. `authorized_keys`라는 이름의 파일을 `.ssh` 디렉터리에 만들고 파일 권한을 `600`(소유자만 파일을 읽거나 쓸 수 있음)으로 변경합니다.

      ```
      [newuser ~]$ touch .ssh/authorized_keys
      ```

      ```
      [newuser ~]$ chmod 600 .ssh/authorized_keys
      ```
**중요**  
파일 권한이 정확하지 않으면 사용자가 로그인할 수 없습니다.

   1. <a name="edit_auth_keys"></a>자주 사용하는 텍스트 편집기(예: **vim** 또는 **nano**)로 `authorized_keys` 파일을 엽니다.

      ```
      [newuser ~]$ nano .ssh/authorized_keys
      ```

      **2단계**에서 검색한 퍼블릭 키를 파일에 붙여넣고 변경 내용을 저장합니다.
**중요**  
퍼블릭 키를 연속된 한 줄에 붙여넣는지 확인합니다. 퍼블릭 키는 여러 줄로 분할되지 않아야 합니다.

      이제 사용자는 `newuser` 파일에 추가한 퍼블릭 키에 해당하는 프라이빗 키를 사용하여 인스턴스에서 `authorized_keys` 사용자에게 로그인할 수 있습니다. Linux 인스턴스에 연결하는 다양한 방법에 대한 자세한 내용은 [SSH를 사용하여 Linux 인스턴스에 연결](connect-to-linux-instance.md) 섹션을 참조하세요.

## 사용자 제거
<a name="delete-user-account"></a>

사용자가 더 이상 필요하지 않은 경우 더 이상 사용할 수 없도록 사용자를 제거할 수 있습니다.

**userdel** 명령으로 시스템에서 사용자를 제거합니다. `-r` 파라미터를 지정하면 사용자의 홈 디렉터리와 메일 스풀이 삭제됩니다. 사용자의 홈 디렉터리와 메일 스풀을 보존하려면 `-r` 파라미터를 생략합니다.

```
[ec2-user ~]$ sudo userdel -r olduser
```

# RDP를 사용하여 Windows 인스턴스에 연결
<a name="connecting_to_windows_instance"></a>

원격 데스크톱을 사용하여 대부분의 Windows Amazon Machine Image(AMI)에서 생성되는 Amazon EC2 인스턴스에 연결할 수 있습니다. 원격 데스크톱은 원격 데스크톱 프로토콜(RDP)을 사용하며 바로 앞에 있는 컴퓨터(로컬 컴퓨터)를 사용하는 것처럼 인스턴스를 연결하여 사용할 수 있도록 해줍니다. 대부분의 Windows 버전과 Mac OS에서도 사용할 수 있습니다.

Windows Server 운영 체제 라이선스는 관리 목적으로 두 개의 동시 원격 연결을 허용합니다. Windows 인스턴스 가격에는 Windows Server 라이선스가 포함됩니다. 2개를 초과하는 동시 원격 연결이 필요할 경우, 원격 데스크톱 서비스(RDS) 라이선스를 구매해야 합니다. 제3의 연결을 시도하면 오류가 발생합니다.

**작은 정보**  
[AWS Nitro 시스템](https://aws.amazon.com/ec2/nitro/)을 기반으로 구축된 인스턴스의 부팅, 네트워크 구성 및 기타 문제를 해결하기 위해 인스턴스에 연결해야 하는 경우 [인스턴스용 EC2 직렬 콘솔](ec2-serial-console.md)을 사용할 수 있습니다.

**Topics**
+ [RDP 클라이언트를 사용하여 Windows 인스턴스에 연결](connect-rdp.md)
+ [Fleet Manager를 사용하여 Windows 인스턴스에 연결](connect-rdp-fleet-manager.md)
+ [RDP를 사용하여 Windows 인스턴스로 파일 전송](connect-to-linux-instanceWindowsFileTransfer.md)

# RDP 클라이언트를 사용하여 Windows 인스턴스에 연결
<a name="connect-rdp"></a>

다음과 같이 RDP 클라이언트를 사용하여 Windows 인스턴스에 연결할 수 있습니다.

**작은 정보**  
[Systems Manager Fleet Manager](connect-rdp-fleet-manager.md) 또는 [EC2 Instance Connect 엔드포인트](connect-with-ec2-instance-connect-endpoint.md)를 사용하여 Windows 인스턴스에 연결할 수도 있습니다.

## 사전 조건
<a name="rdp-prereqs"></a>

RDP 클라이언트를 사용하여 Windows 인스턴스에 연결하려면 다음 사전 요구 사항을 충족해야 합니다.
+ **일반적인 사전 조건을 완료하세요.**
  + 인스턴스가 상태 확인을 통과했는지 확인합니다. 인스턴스가 연결 요청을 수락할 준비가 될 때까지 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 [상태 확인 보기](viewing_status.md) 섹션을 참조하세요.
  + [필수 인스턴스 세부 정보 가져오기](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [프라이빗 키 찾기 및 권한 설정](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(선택 사항) 인스턴스 지문 가져오기](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **RDP 클라이언트를 설치합니다.**
  + (Windows) Windows에는 기본적으로 RDP 클라이언트가 포함되어 있습니다. 확인하려면 명령 프롬프트 창에 **mstsc**를 입력합니다. 컴퓨터에서이 명령을 인식하지 못하면 Microsoft Store에서 [Microsoft 원격 데스크톱 앱](https://apps.microsoft.com/detail/9wzdncrfj3ps)을 다운로드합니다.
  + (macOS X) Mac App Store에서 [Windows App for Mac](https://apps.apple.com/us/app/windows-app/id1295203466?mt=12)(이전의 Microsoft 원격 데스크톱)을 다운로드합니다.
  + (Linux) [Remmina](https://remmina.org/)를 사용합니다.
+ **IP 주소에서 인바운드 RDP 트래픽을 허용합니다.**

  인스턴스와 연관된 보안 그룹이 IP 주소로부터 들어오는 RDP 트래픽을 허용하는지 확인하십시오. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.

## 관리자 암호 검색
<a name="retrieve-initial-admin-password"></a>

인스턴스를 도메인에 조인한 경우 Directory Service의 도메인 자격 증명을 사용하여 인스턴스에 연결할 수 있습니다. 원격 데스크톱 로그인 화면에서 로컬 컴퓨터 이름과 생성된 암호를 사용하는 대신 관리자의 정규화된 사용자 이름(예: **corp.example.com\$1Admin**)과 이 계정의 암호를 사용합니다.

RDP를 사용하여 Windows 인스턴스에 연결하려면 최초 관리자 암호를 검색한 다음 인스턴스에 연결할 때 이 암호를 입력해야 합니다. 인스턴스를 시작한 후 암호를 사용할 수 있으려면 몇 분 정도 걸립니다. 계정에 [GetPasswordData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetPasswordData.html) 작업을 호출할 권한이 있어야 합니다. 자세한 내용은 [Amazon EC2 API에 대한 액세스를 제어하는 정책 예제](ExamplePolicies_EC2.md) 섹션을 참조하세요.

관리자 계정의 기본 사용자 이름은 AMI에 포함된 운영 체제(OS)의 언어에 따라 다릅니다. 올바른 사용자 이름을 확인하려면 운영 체제의 언어를 확인한 다음 해당 사용자 이름을 선택합니다. 예를 들어, 영어 OS의 경우 사용자 이름은 `Administrator`이고, 프랑스 OS의 경우 사용자 이름은 `Administrateur`이며, 포르투갈어 OS의 경우 사용자 이름은 `Administrador`입니다. OS의 언어 버전에 해당 언어의 사용자 이름이 없는 경우 사용자 이름 `Administrator (Other)`를 선택합니다. 자세한 내용은 Microsoft 웹 사이트의 [Localized Names for Administrator Account in Windows](https://learn.microsoft.com/en-us/archive/technet-wiki/13813.localized-names-for-administrator-account-in-windows)를 참조하세요.

**최초 관리자 암호 검색**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 찾은 인스턴스를 선택한 다음 [**Connect**]를 선택합니다.

1. **인스턴스에 연결** 페이지에서 **RDP 클라이언트** 탭을 선택합니다.

1. 관리자 계정의 기본 사용자 이름을 **사용자 이름**으로 선택합니다. 선택한 사용자 이름은 인스턴스를 시작하는 데 사용한 AMI에 포함된 운영 체제(OS)의 언어와 일치해야 합니다. 운영 체제와 동일한 언어의 사용자 이름이 없는 경우 **관리자(기타)**를 선택합니다.

1. **암호 가져오기**를 선택합니다.

1. **Windows 암호 가져오기** 페이지에서 다음을 수행하세요.

   1. **프라이빗 키 파일 업로드**를 선택하고 인스턴스를 시작할 때 지정한 프라이빗 키(`.pem`) 파일로 이동합니다. 파일을 선택하고 [**열기(Open)**]를 클릭하여 파일의 전체 콘텐츠를 이 창에 복사합니다.

   1. **암호 해독**을 선택합니다. **Windows 암호 가져오기** 페이지가 닫히고 이전에 표시된 **암호 가져오기** 링크를 대체하는 **암호** 아래에 인스턴스의 기본 관리자 암호가 표시됩니다.

   1. 암호를 복사하여 안전한 장소에 저장합니다. 이 암호는 인스턴스에 연결하는 데 필요합니다.

## Windows 인스턴스에 연결
<a name="connecting-to-windows-instance-rdp-client"></a>

다음 절차에서는 Windows용 원격 데스크톱 연결 클라이언트(MSTSC)를 사용합니다. 다른 RDP 클라이언트를 사용하는 경우 RDP 파일을 다운로드한 다음 RDP 클라이언트 설명서에서 RDP 연결 설정 단계를 참조하세요.

**RDP 클라이언트를 사용하여 Windows 인스턴스에 연결**

1. **인스턴스에 연결** 페이지에서 **원격 데스크톱 파일 다운로드**를 선택합니다. 파일 다운로드가 완료되면 **취소**를 선택하여 **인스턴스** 페이지로 돌아갑니다. RDP 파일이 `Downloads` 폴더에 다운로드됩니다.

1. `mstsc.exe`를 실행하여 RDP 클라이언트를 엽니다.

1. **옵션 표시**를 확장하고 **열기**를 선택한 다음 `Downloads` 폴더에서.rdp 파일을 선택합니다.

1. 기본적으로 **컴퓨터**는 인스턴스의 퍼블릭 IPv4 DNS 이름이고 **사용자 이름**은 관리자 계정입니다. 대신 IPv6를 사용하여 인스턴스에 연결하려면 인스턴스의 퍼블릭 IPv4 DNS 이름을 해당 IPv6 주소로 바꿉니다. 기본 설정을 검토하고 필요에 따라 변경합니다.

1. **연결**을 선택합니다. 원격 연결 게시자를 알 수 없다는 경고가 표시되면 **연결**을 선택하여 계속합니다.

1. 앞서 저장한 암호를 입력한 후 **확인**을 선택합니다.

1. 자체 서명된 인증서의 특성으로 인해, 보안 인증서를 인증할 수 없다는 경고 메시지가 나타날 수도 있습니다. 다음 중 하나를 수행하세요.
   + 인증서를 신뢰하는 경우 **예**를 선택하여 인스턴스에 연결합니다.
   + [Windows] 계속하기 전에 인증서의 지문을 시스템 로그의 값과 비교하여 원격 컴퓨터의 ID를 확인합니다. **인증서 보기**를 선택한 다음 **세부 정보** 탭에서 **지문**을 선택합니다. 이 값을 **작업**, **모니터링 및 문제 해결**, **시스템 로그 가져오기**의 `RDPCERTIFICATE-THUMBPRINT` 값과 비교합니다.
   + [Mac OS X] 계속하기 전에 인증서의 지문을 시스템 로그의 값과 비교하여 원격 컴퓨터의 ID를 확인합니다. **인증서 보기**를 선택하고 **세부 정보**를 확장한 다음 **SHA1 지문**을 선택합니다. 이 값을 **작업**, **모니터링 및 문제 해결**, **시스템 로그 가져오기**의 `RDPCERTIFICATE-THUMBPRINT` 값과 비교합니다.

1. RDP 연결에 성공하면 RDP 클라이언트는 Windows 로그인 화면을 표시한 다음 Windows 데스크톱을 표시합니다. 오류 메시지가 표시되면 [원격 데스크톱으로 원격 컴퓨터에 연결할 수 없음](troubleshoot-connect-windows-instance.md#rdp-issues)의 내용을 참조하세요. RDP 연결을 완료하면 RDP 클라이언트를 닫을 수 있습니다.

## 사용자 계정 구성
<a name="configure-admin-accounts"></a>

RDP를 통해 인스턴스에 연결한 후에는 다음 작업을 수행하는 것이 좋습니다.
+ 기본값으로 제공된 관리자 암호를 변경합니다. Windows Server를 실행하는 다른 컴퓨터처럼 [인스턴스 자체에 로그온한 상태에서 암호를 변경](https://support.microsoft.com/en-us/windows/change-or-reset-your-windows-password-8271d17c-9f9e-443f-835a-8318c8f68b9c)할 수 있습니다.
+ 인스턴스에서 관리자 권한을 사용하여 또 다른 사용자를 생성합니다. 이는 관리자 암호를 잊어버리거나 관리자 계정에 문제가 있는 경우를 위한 보호 수단입니다. 새 사용자에게 인스턴스에 원격으로 액세스할 수 있는 권한이 있어야 합니다. Windows 바탕 화면이나 파일 탐색기에서 **이 PC** 아이콘을 마우스 오른쪽 단추로 클릭하고 **속성**을 선택하여 **시스템 속성**을 엽니다. **원격 설정**을 선택하고 **사용자 선택**을 선택하여 사용자를 **원격 데스크톱 사용자** 그룹에 추가합니다.  
![\[시스템 속성 창을 엽니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/windows-connect-properties-rdp.png)

# Fleet Manager를 사용하여 Windows 인스턴스에 연결
<a name="connect-rdp-fleet-manager"></a>

AWS Systems Manager의 기능인 Fleet Manager를 사용하면 RDP(Remote Desktop Protocol)를 사용하여 Windows 인스턴스에 연결하고 AWS Management Console의 동일한 페이지에 최대 4개의 Windows 인스턴스를 표시할 수 있습니다. Amazon EC2 콘솔의 **인스턴스** 페이지에서 Fleet Manager 원격 데스크톱의 첫 번째 인스턴스에 직접 연결할 수 있습니다. Fleet Manager에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [원격 데스크톱을 사용하여 관리형 인스턴스에 연결](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)을 참조하세요.

Fleet Manager를 사용하여 연결하는 경우 IP 주소로부터 수신 중인 RDP 트래픽을 특별히 허용할 필요가 없습니다. Fleet Manager가 알아서 처리합니다.

**사전 조건**  
Fleet Manager를 사용하여 인스턴스에 연결하기 전에 사용자 환경을 설정해야 합니다. 자세한 내용은 **AWS Systems Manager 사용 설명서의 [환경 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html#rdp-prerequisites)을 참조하세요.

**Fleet Manager를 사용하여 Windows 인스턴스에 연결**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **Instances**(인스턴스)를 선택합니다.

1. 찾은 인스턴스를 선택한 다음 [**Connect**]를 선택합니다.

1. **RDP 클라이언트** 탭의 **연결 유형**에서 **Fleet Manager를 사용하여 연결**을 선택합니다.

1. **Fleet Manager 원격 데스크톱**을 선택합니다. 그러면 AWS Systems Manager 콘솔에서 **Fleet Manager Remote Desktop**(Fleet Manager 원격 데스크톱) 페이지가 열립니다.

1. 자격 증명을 입력한 다음 **연결**을 선택합니다.

1. RDP 연결이 성공하면 Fleet Manager에 Windows 데스크톱이 표시됩니다. 세션을 완료하면 **작업**, **세션 종료**를 선택합니다.

자세한 내용을 알아보려면 **AWS Systems Manager 사용 설명서의 [원격 데스크톱을 사용하여 Windows Server 관리 인스턴스에 연결](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)을 참조하세요.

# RDP를 사용하여 Windows 인스턴스로 파일 전송
<a name="connect-to-linux-instanceWindowsFileTransfer"></a>

다른 Windows 서버를 사용할 때와 똑같은 방식으로 Windows 인스턴스를 사용할 수 있습니다. 예를 들어, Microsoft 원격 데스크톱 연결(RDP) 소프트웨어의 로컬 파일 공유 기능을 사용하여 Windows 인스턴스와 로컬 컴퓨터 간에 파일을 전송할 수 있습니다. 하드 디스크 드라이브, DVD 드라이브, 휴대용 미디어 드라이브 및 매핑된 네트워크 드라이브에 있는 로컬 파일에 액세스할 수 있습니다.

Windows 인스턴스에서 로컬 파일에 액세스하려면 원격 세션 드라이브를 로컬 드라이브에 매핑하여 로컬 파일 공유 기능을 활성화해야 합니다. 로컬 컴퓨터 운영 체제가 Windows인지 macOS X인지에 따라 단계가 약간 다릅니다.

RDP를 사용하여 연결하기 위한 사전 조건에 대한 자세한 내용은 [사전 조건](connect-rdp.md#rdp-prereqs) 섹션을 참조하세요.

------
#### [ Windows ]

**로컬 Windows 컴퓨터의 로컬 드라이브에 원격 세션 드라이브 매핑**

1. 원격 데스크톱 연결 클라이언트를 엽니다.

1. [**옵션 보기(Show Options)**]를 선택합니다.

1. 다음과 같이 **컴퓨터** 필드에 인스턴스 호스트 이름을 추가하고 **사용자 이름** 필드에 사용자 이름을 추가합니다.

   1. **연결 설정(Connection settings)**에서 **열기...(Open...)**를 선택하고 Amazon EC2 콘솔에서 다운로드한 RDP 바로 가기 파일을 찾습니다. 이 파일에는 인스턴스를 식별하는 퍼블릭 IPv4 DNS 호스트 이름과 관리자 사용자 이름이 포함되어 있습니다.

   1. 파일과 **열기(Open)**를 차례로 선택합니다. **컴퓨터(Computer)** 및 **사용자 이름(User name)** 필드는 RDP 바로 가기 파일의 값으로 채워집니다.

   1. **저장**을 선택합니다.

1. **로컬 리소스** 탭을 선택합니다.

1. **로컬 디바이스 및 리소스(Local devices and resources)**에서 **더 보기...(More...)**를 선택합니다.  
![\[RDP 로컬 리소스 창입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/windows-connect-rdp-local-resources.png)

1. **드라이브**를 열고 Windows 인스턴스에 매핑할 로컬 드라이브를 선택합니다.

1. **확인**을 선택합니다.  
![\[RDP 로컬 디바이스 및 리소스 창\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/windows-connect-rdp-drives.png)

1. **연결**을 선택하여 Windows 인스턴스에 연결합니다.

------
#### [ macOS X ]

**로컬 macOS X 컴퓨터의 로컬 폴더에 원격 세션 드라이브 매핑**

1. 원격 데스크톱 연결 클라이언트를 엽니다.

1. 인스턴스에 처음 연결할 때 Amazon EC2 콘솔에서 다운로드한 RDP 파일을 찾아 원격 데스크톱 연결 클라이언트로 끌어 놓습니다.

1. RDP 파일을 마우스 오른쪽 버튼으로 클릭하고 **편집(Edit)**을 선택합니다.

1. **폴더** 탭을 선택하고 **폴더 리디렉션** 확인란을 선택합니다.  
![\[Microsoft 원격 데스크톱 PC 편집 창.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/mac-map-folder-1.png)

1. 왼쪽 하단에서 **\$1** 아이콘을 선택하고 매핑할 폴더를 찾은 다음 **열기(Open)**를 선택합니다. 매핑할 모든 폴더에 대해 이 단계를 반복합니다.

1. **저장**을 선택합니다.

1. **연결**을 선택하여 Windows 인스턴스에 연결합니다. 암호를 입력하라는 메시지가 나타납니다.

1. 인스턴스의 파일 탐색기에서**내 PC(This PC)**를 클릭하고 로컬 파일에 액세스할 수 있는 공유 폴더를 찾습니다. 다음 스크린샷에서 로컬 컴퓨터의 **바탕 화면(Desktop)** 폴더는 인스턴스의 원격 세션 드라이브에 매핑되었습니다.  
![\[Microsoft 원격 데스크톱 PC 편집 창.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/mac-map-folder-2.png)

Mac 컴퓨터의 원격 세션에서 로컬 디바이스를 사용할 수 있도록 하는 방법에 대한 자세한 내용은 [macOS 클라이언트 시작](https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-mac)을 참조하세요.

------

# Session Manager를 사용하여 Amazon EC2 인스턴스에 연결
<a name="connect-with-systems-manager-session-manager"></a>

세션 관리자는 대화형 원클릭 브라우저 기반 셸 또는 AWS Systems Manager를 통해 Amazon EC2 인스턴스를 관리할 수 있는 완전관리형 AWS CLI 기능입니다. 세션 관리자를 사용하여 계정의 인스턴스와 관련된 세션을 시작할 수 있습니다. 세션이 시작된 후에는 다른 연결 유형에서와 마찬가지로 인스턴스에서 대화형 명령을 실행할 수 있습니다. 세션 관리자에 대한 자세한 내용은 AWS Systems Manager 사용자 설명서**의 [AWS Systems Manager 세션 관리자](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)를 참조하세요.

**사전 조건**  
Session Manager를 사용하여 인스턴스에 연결하기 전에 필요한 설정 단계를 완료해야 합니다. 예를 들어 인스턴스는 SSM에서 관리하고 **AmazonSSMManagedInstanceCore** 정책과 IAM 역할을 연결해야 합니다. 자세한 내용은 [Session Manager 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)을 참조하세요.

**Amazon EC2 콘솔의 Session Manager를 사용하여 Amazon EC2 인스턴스에 연결하려면 다음을 수행합니다.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **Instances**(인스턴스)를 선택합니다.

1. 인스턴스를 선택한 다음 **연결**을 선택합니다.

1. 연결 방법으로 **Session Manager**를 선택합니다.

1. **연결**을 클릭하여 세션을 선택합니다.  
![\[Session Manager 탭의 연결 버튼.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/connect-method-session-manager.png)

**문제 해결**  
하나 이상의 Systems Manager 작업(`ssm:command-name`)을 수행할 권한이 없다는 오류가 표시되면 Amazon EC2 콘솔에서 세션을 시작할 수 있도록 정책을 업데이트해야 합니다. 자세한 내용과 지침은 *AWS Systems Manager 사용 설명서*의 [Session Manager에 대한 빠른 시작 기본 IAM 정책](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-restrict-access-quickstart.html)을 참조하세요.

# 퍼블릭 IP 주소와 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결
<a name="connect-linux-inst-eic"></a>

Amazon EC2 Instance Connect는 Secure Shell(SSH)을 사용하여 Linux 인스턴스에 연결할 수 있는 안전한 방법을 제공합니다. EC2 Instance Connect를 사용하면 AWS Identity and Access Management(IAM) [정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 및 [보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal)를 사용하여 인스턴스에 대한 SSH 액세스를 제어하고 SSH 키를 공유 및 관리할 필요가 없습니다. EC2 Instance Connect를 사용하는 모든 연결 요청은 [AWS CloudTrail에 로깅되므로](monitor-with-cloudtrail.md#ec2-instance-connect-cloudtrail) 연결 요청을 감사할 수 있습니다.

EC2 Instance Connect를 사용하면 Amazon EC2 콘솔 또는 직접 선택한 SSH 클라이언트로 인스턴스에 연결할 수 있습니다.

EC2 Instance Connect를 사용하여 인스턴스에 연결할 때 EC2 Instance Connect API는 SSH 퍼블릭 키를 [인스턴스 메타데이터](ec2-instance-metadata.md)에 푸시하여 60초 동안 유지합니다. 사용자에게 연결된 IAM 정책은 퍼블릭 키를 인스턴스 메타데이터로 푸시하도록 사용자에게 권한을 부여합니다. SSH 대몬은 EC2 Instance Connect가 설치될 때 구성된 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 사용하여 인증을 위해 인스턴스 메타데이터에서 퍼블릭 키를 찾고 사용자를 인스턴스에 연결합니다.

**작은 정보**  
EC2 Instance Connect는 Linux 인스턴스에 연결할 수 있는 옵션 중 하나입니다. 다른 옵션은 [SSH를 사용하여 Linux 인스턴스에 연결](connect-to-linux-instance.md)을(를) 참조하세요. Windows 인스턴스에 연결하려면 [RDP를 사용하여 Windows 인스턴스에 연결](connecting_to_windows_instance.md) 섹션을 참조하세요.

**가격 책정**  
EC2 Instance Connect는 추가 비용 없이 제공됩니다.

**리전 가용성**  
EC2 Instance Connect는 아시아 태평양(타이베이)을 제외한 모든 AWS 리전에서 사용할 수 있습니다. 로컬 영역에서는 지원되지 않습니다.

**Topics**
+ [자습서](ec2-instance-connect-tutorial.md)
+ [사전 조건](ec2-instance-connect-prerequisites.md)
+ [권한](ec2-instance-connect-configure-IAM-role.md)
+ [EC2 Instance Connect 설치](ec2-instance-connect-set-up.md)
+ [인스턴스에 연결](ec2-instance-connect-methods.md)
+ [EC2 Instance Connect 제거](ec2-instance-connect-uninstall.md)

EC2 Instance Connect를 사용하여 Bastion Host의 보안을 개선하는 방법은 블로그 게시물 [Securing your bastion hosts with Amazon EC2 Instance Connect](https://aws.amazon.com/blogs/infrastructure-and-automation/securing-your-bastion-hosts-with-amazon-ec2-instance-connect/)(Amazon EC2 Instance Connect를 사용하여 Bastion Host의 보안 유지)를 참조하세요.

# 자습서: EC2 Instance Connect를 사용하여 인스턴스에 연결하는 데 필요한 구성 완료
<a name="ec2-instance-connect-tutorial"></a>

Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 먼저 인스턴스에 성공적으로 연결할 수 있는 사전 필수 구성 작업을 완료해야 합니다. 이 자습서의 목적은 사전 필수 구성을 완료하는 작업을 안내하는 것입니다.

**자습서 개요**

이 자습서에서는 다음 작업을 완료합니다.
+ [작업 1: EC2 Instance Connect 사용에 필요한 권한 부여](#eic-tut1-task1)

  먼저 퍼블릭 키를 인스턴스 메타데이터에 푸시할 수 있는 IAM 권한이 포함된 IAM 정책을 생성합니다. IAM 자격 증명에서 이 권한을 얻을 수 있도록 IAM 자격 증명(사용자, 사용자 그룹 또는 역할)에 이 정책을 연결합니다.
+ [작업 2: EC2 Instance Connect 서비스에서 인스턴스로의 인바운드 트래픽 허용](#eic-tut1-task2)

  그런 다음, EC2 Instance Connect 서비스에서 인스턴스로 트래픽을 허용하는 보안 그룹을 생성합니다. 이는 Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결할 때 필요합니다.
+ [작업 3: 인스턴스 시작](#eic-tut1-task3)

  그런 다음, EC2 Instance Connect에 사전 설치된 AMI를 사용하여 EC2 인스턴스를 시작하고 이전 단계에서 생성한 보안 그룹을 추가합니다.
+ [작업 4: 인스턴스에 연결](#eic-tut1-task4)

  마지막으로 Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결합니다. 연결할 수 있다면 작업 1, 2, 3에서 완료한 사전 조건 구성이 성공한 것입니다.

## 작업 1: EC2 Instance Connect 사용에 필요한 권한 부여
<a name="eic-tut1-task1"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결할 때 EC2 Instance Connect API는 SSH 퍼블릭 키를 [인스턴스 메타데이터](ec2-instance-metadata.md)에 푸시하여 60초 동안 유지합니다. 퍼블릭 키를 인스턴스 메타데이터로 푸시하는 데 필요한 권한을 부여하려면 IAM 자격 증명(사용자, 사용자 그룹 또는 역할)에 연결된 IAM 정책이 필요합니다.

**작업 목표**

퍼블릭 키를 인스턴스에 푸시하도록 권한을 부여하는 IAM 정책을 생성합니다. 허용할 특정 작업은 `ec2-instance-connect:SendSSHPublicKey`입니다. 또한 Amazon EC2 콘솔에서 인스턴스를 보고 선택할 수 있도록 `ec2:DescribeInstances` 작업을 허용해야 합니다.

정책을 생성한 후에 IAM 자격 증명에서 이 권한을 얻을 수 있도록 IAM 자격 증명(사용자, 사용자 그룹 또는 역할)에 정책을 연결합니다.

다음과 같이 구성된 정책을 생성합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}
```

------

**중요**  
이 자습서에서 생성한 IAM 정책은 매우 허용적인 정책으로, 모든 AMI 사용자 이름을 사용하여 모든 인스턴스에 연결할 수 있습니다. 자습서를 단순하게 유지하고 이 자습서에서 학습할 특정 구성에 초점을 맞추고자 매우 허용적인 이 정책을 사용합니다. 하지만 프로덕션 환경에서는 [최소 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)을 제공하도록 IAM 정책을 구성하는 것이 좋습니다. IAM 정책에 대한 예시는 [EC2 Instance Connect에 대한 IAM 권한 부여](ec2-instance-connect-configure-IAM-role.md) 섹션을 참조하세요.

**EC2 Instance Connect를 사용하여 인스턴스에 연결할 수 있게 하는 IAM 정책을 생성 및 연결하는 방법**

1. **먼저 IAM 정책 생성**

   1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

   1. 탐색 창에서 **Policies**를 선택합니다.

   1. **정책 생성**을 선택합니다.

   1. **권한 지정** 페이지에서 다음을 수행합니다.

      1. **서비스**에서 **EC2 Instance Connect**를 선택합니다.

      1. **허용되는 작업**의 검색 필드에 **send**를 입력하기 시작하면 관련 작업이 표시됩니다. **SendSSHPublicKey**를 선택합니다.

      1. **리소스** 아래에서 **모두**를 선택합니다. 프로덕션 환경에서는 ARN으로 인스턴스를 지정하는 것이 좋습니다. 단, 이 자습서에서는 모든 인스턴스를 허용합니다.

      1. **Add More Permissions(더 많은 권한 추가)**를 선택합니다.

      1. **서비스**에서 **EC2**를 선택합니다.

      1. **허용되는 작업**의 검색 필드에 **describein**을 입력하기 시작하면 관련 작업이 표시됩니다. **DescribeInstances**를 선택합니다.

      1. **다음**을 선택합니다.

   1. **검토 및 생성** 페이지에서 다음을 수행합니다.

      1. [**정책 이름(Policy name)**]에 정책의 이름을 입력합니다.

      1. **정책 생성**을 선택합니다.

1. **그리고 자격 증명에 정책 연결**

   1. IAM 콘솔의 탐색 창에서 **정책(Policies)**을 선택합니다.

   1. 정책 목록에서 연결할 정책 이름 옆의 옵션 버튼을 선택합니다. 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

   1. **작업**], **연결**을 선택합니다.

   1. **IAM 개체**에서 ID(사용자, 사용자 그룹 또는 역할) 옆의 확인란을 선택합니다. 검색 상자를 사용하여 개체 목록을 필터링할 수 있습니다.

   1. **정책 연결**을 선택합니다.

### 애니메이션 보기: IAM 정책 생성
<a name="eic-tut1-task1-animation1"></a>

![\[이 애니메이션에서는 IAM 정책을 생성하는 방법을 보여줍니다. 이 애니메이션의 텍스트 버전은 이전 절차의 단계를 참조하세요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/eic-tut1-task1-create-iam-policy.gif)


### 애니메이션 보기: IAM 정책 연결
<a name="eic-tut1-task1-animation2"></a>

![\[이 애니메이션에서는 IAM 정책을 IAM 자격 증명에 연결하는 방법을 보여줍니다. 이 애니메이션의 텍스트 버전은 이전 절차의 단계를 참조하세요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/eic-tut1-task1-attach-iam-policy.gif)


## 작업 2: EC2 Instance Connect 서비스에서 인스턴스로의 인바운드 트래픽 허용
<a name="eic-tut1-task2"></a>

Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결할 경우, 인스턴스에 도달하기 위해 허용해야 하는 트래픽은 EC2 Instance Connect 서비스에서 생성된 트래픽입니다. 이는 로컬 컴퓨터에서 인스턴스로 연결하는 작업과는 다릅니다. 이 경우 로컬 컴퓨터에서 인스턴스로의 트래픽을 허용해야 합니다. EC2 Instance Connect 서비스의 트래픽을 허용하려면 EC2 Instance Connect 서비스의 IP 주소 범위에서 생성되는 인바운드 SSH 트래픽을 허용하는 보안 그룹을 생성해야 합니다.

AWS는 접두사 목록을 사용하여 IP 주소 범위를 관리합니다. EC2 Instance Connect 접두사 목록의 이름은 다음과 같으며, *리전*은 리전 코드로 대체됩니다.
+ IPv4 접두사 목록 이름: `com.amazonaws.region.ec2-instance-connect`
+ IPv6 접두사 목록 이름: `com.amazonaws.region.ipv6.ec2-instance-connect`

**작업 목표**

인스턴스가 있는 리전에서 IPv4 접두사 목록의 포트 22 상의 인바운드 SSH 트래픽을 허용하는 보안 그룹을 생성합니다.

**EC2 Instance Connect 서비스에서 인스턴스로 인바운드 트래픽을 허용하는 보안 그룹을 생성하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **보안 그룹**을 선택합니다.

1. **보안 그룹 생성**을 선택합니다.

1. **기본 세부 정보**에서 다음을 수행합니다.

   1. **보안 그룹 이름**에 보안 그룹의 의미 있는 이름을 입력합니다.

   1. **설명**에 보안 그룹의 의미 있는 설명을 입력합니다.

1. **인바운드 규칙**에서 다음을 수행합니다.

   1. **규칙 추가**를 선택합니다.

   1. **Type(유형)**에서 **SSH**를 선택합니다.

   1. **소스**에서 **사용자 지정**을 그대로 둡니다.

   1. **소스** 옆의 필드에서 EC2 Instance Connect의 접두사 목록을 선택합니다.

      예를 들어, 인스턴스가 미국 동부(버지니아 북부)(`us-east-1`) 리전에 있고 사용자가 퍼블릭 IPv4 주소에 연결할 경우, **com.amazonaws.us-east-1.ec2-instance-connect** 접두사 목록을 선택합니다.

1. **보안 그룹 생성**을 선택합니다.

### 애니메이션 보기: 보안 그룹 생성
<a name="eic-tut1-task2-animation"></a>

![\[이 애니메이션에서는 보안 그룹을 구성하는 방법을 보여줍니다. 이 애니메이션의 텍스트 버전은 이전 절차의 단계를 참조하세요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/tut1-task2-eic-security-group.gif)


## 작업 3: 인스턴스 시작
<a name="eic-tut1-task3"></a>

인스턴스를 시작할 때 인스턴스를 시작하는 데 필요한 정보가 포함된 AMI를 지정해야 합니다. EC2 Instance Connect가 사전 설치되어 있거나 설치되지 않은 상태에서 인스턴스를 시작하도록 선택할 수 있습니다. 이 작업에서는 EC2 Instance Connect가 사전 설치된 AMI를 지정합니다.

EC2 Instance Connect가 사전 설치되지 않은 상태에서 인스턴스를 시작하고 EC2 Instance Connect를 사용하여 인스턴스에 연결하려는 경우 추가 구성 단계를 수행해야 합니다. 이 단계는 본 자습서에서 다루지 않습니다.

**작업 목표**

EC2 Instance Connect가 사전 설치된 Amazon Linux 2023 AMI에서 인스턴스를 시작합니다. 또한 Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결할 수 있도록 이전에 생성한 보안 그룹을 지정해야 합니다. EC2 Instance Connect를 사용하여 인스턴스에 연결하면 퍼블릭 키를 인스턴스의 메타데이터로 푸시하므로 인스턴스를 시작할 때 SSH 키를 지정하지 않아도 됩니다.

**Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 연결할 인스턴스를 시작하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에는 현재 AWS 리전이 표시됩니다(예: **아일랜드**). 인스턴스를 시작할 리전을 선택합니다. 특정 리전의 트래픽을 허용하는 보안 그룹을 생성했기 때문에 이 선택이 중요합니다. 인스턴스를 시작할 리전과 동일한 리전을 선택해야 하기 때문입니다.

1. Amazon EC2 콘솔 대시보드에서 **인스턴스 시작**을 선택합니다.

1. (선택 사항) **이름 및 태그(Name and tags)** 아래의 **이름(Name)**에 인스턴스를 설명하는 이름을 입력합니다.

1. **애플리케이션 및 OS 이미지(Amazon Machine Image)**에서 **빠른 시작**을 선택합니다. **Amazon Linux**가 기본적으로 선택됩니다. **Amazon Machine Image(AMI)** 아래에서 **Amazon Linux 2023 AMI**가 기본적으로 선택됩니다. 이 작업에 대한 기본 선택을 그대로 유지합니다.

1. **인스턴스 유형** 아래 **인스턴스 유형**에서 기본 선택을 유지하거나 다른 인스턴스 유형을 선택합니다.

1. **키 페어(로그인)** 아래 **키 페어 이름**에서 **없이 진행(권장되지 않음)**을 선택합니다. EC2 Instance Connect를 사용하여 인스턴스에 연결하는 경우 EC2 Instance Connect는 키 페어를 인스턴스의 메타데이터에 푸시하며, 이 키 페어가 연결에 사용됩니다.

1. **Network settings**(네트워크 설정)에서 다음을 수행합니다.

   1. **퍼블릭 IP 자동 할당**에서 **활성화**를 그대로 둡니다.
**참고**  
Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 인스턴스에 퍼블릭 IPv4 또는 IPv6 주소가 있어야 합니다.

   1. **방화벽(보안 그룹)**에서 **기존 보안 그룹 선택**을 선택합니다.

   1. **일반 보안 그룹**에서 이전에 생성한 보안 그룹을 선택합니다.

1. **요약(Summary)** 패널에서 **인스턴스 실행(Launch instance)**을 선택합니다.

### 애니메이션 보기: 인스턴스 시작
<a name="eic-tut1-task3-animation"></a>

![\[이 애니메이션에서는 인스턴스를 시작하는 방법을 보여줍니다. 이 애니메이션의 텍스트 버전은 이전 절차의 단계를 참조하세요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/tut1-task3-launch-an-instance.gif)


## 작업 4: 인스턴스에 연결
<a name="eic-tut1-task4"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결할 때 EC2 Instance Connect API는 SSH 퍼블릭 키를 [인스턴스 메타데이터](ec2-instance-metadata.md)에 푸시하여 60초 동안 유지합니다. SSH 대몬은 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 사용하여 인증을 위해 인스턴스 메타데이터에서 퍼블릭 키를 찾고 사용자를 인스턴스에 연결합니다.

**작업 목표**

이 작업에서는 Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스에 연결합니다. 필수 작업 1, 2, 3을 완료하면 연결에 성공합니다.

**인스턴스에 연결하는 단계**

다음 단계를 사용하여 인스턴스에 연결합니다. 이 단계의 애니메이션을 보려면 [애니메이션 보기: 인스턴스에 연결](#eic-tut1-task4-animation) 섹션을 참조하세요.

**Amazon EC2 콘솔에서 EC2 Instance Connect를 사용하여 인스턴스를 연결하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에는 현재 AWS 리전이 표시됩니다(예: **아일랜드**). 인스턴스가 있는 리전을 선택합니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택하고 **연결**을 선택합니다.

1. **EC2 Instance Connect** 탭을 선택합니다.

1. **퍼블릭 IP를 사용하여 연결**을 선택합니다.

1. **연결**을 선택합니다.

   터미널 창이 브라우저에서 열리고 인스턴스에 연결됩니다.

### 애니메이션 보기: 인스턴스에 연결
<a name="eic-tut1-task4-animation"></a>

![\[이 애니메이션에서는 EC2 Instance Connect를 사용하여 인스턴스를 연결하는 방법을 보여줍니다. 이 애니메이션의 텍스트 버전은 이전 절차의 단계를 참조하세요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/eic-tut1-task4-connect.gif)


# EC2 Instance Connect 사전 조건
<a name="ec2-instance-connect-prerequisites"></a>

**Topics**
+ [EC2 Instance Connect 설치](#eic-prereqs-install-eic-on-instance)
+ [네트워크 연결 확인](#eic-prereqs-network-access)
+ [인바운드 SSH 트래픽 허용](#ec2-instance-connect-setup-security-group)
+ [권한 부여](#eic-prereqs-grant-permissions)
+ [로컬 컴퓨터에 SSH 클라이언트 설치](#eic-prereqs-install-ssh-client)
+ [사용자 이름 요구 사항 충족](#eic-prereqs-username)

## EC2 Instance Connect 설치
<a name="eic-prereqs-install-eic-on-instance"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 인스턴스에 EC2 Instance Connect가 설치되어 있어야 합니다. EC2 Instance Connect가 사전 설치된 AMI를 사용하여 인스턴스를 시작하거나 지원되는 AMI로 시작된 인스턴스에 EC2 Instance Connect를 설치할 수 있습니다. 자세한 내용은 [EC2 인스턴스에 EC2 Instance Connect를 설치합니다.](ec2-instance-connect-set-up.md) 섹션을 참조하세요.

## 네트워크 연결 확인
<a name="eic-prereqs-network-access"></a>

사용자가 인터넷이나 인스턴스의 프라이빗 IP 주소를 통해 인스턴스에 연결할 수 있도록 인스턴스를 구성할 수 있습니다. 사용자가 EC2 Instance Connect를 사용하여 인스턴스에 연결하는 방법에 따라 다음 네트워크 액세스를 구성해야 합니다.
+ 사용자가 인터넷을 통해 인스턴스에 연결하는 경우 인스턴스는 퍼블릭 IPv4 또는 IPv6 주소를 보유해야 하고 인터넷 경로가 있는 퍼블릭 서브넷에 있어야 합니다. 기본 퍼블릭 서브넷을 수정하지 않은 경우 IPv4의 인터넷 연결 경로만 포함되고 IPv6는 포함되지 않습니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [인터넷 게이트웨이를 사용하여 VPC 인터넷 액세스 활성화](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#vpc-igw-internet-access)를 참조하세요.
+ 사용자가 인스턴스의 프라이빗 IPv4 주소를 통해 인스턴스에 연결하는 경우 사용자가 인스턴스의 프라이빗 IP 주소에 도달할 수 있도록 AWS Direct Connect, AWS Site-to-Site VPN 또는 VPC 피어링을 사용하여 VPC에 대한 프라이빗 네트워크 연결을 설정해야 합니다.

인스턴스에 퍼블릭 IPv4 또는 IPv6 주소가 없고 위에서 설명한 대로 네트워크 액세스를 구성하지 않으려는 경우 EC2 Instance Connect 대신 EC2 Instance Connect 엔드포인트를 고려할 수 있습니다. EC2 Instance Connect 엔드포인트를 사용하면 인스턴스에 퍼블릭 IPv4 또는 IPv6 주소가 없어도 SSH 또는 RDP를 통해 인스턴스에 연결할 수 있습니다. 자세한 내용은 [Amazon EC2 콘솔을 사용하여 Linux 인스턴스에 연결](connect-using-eice.md#connect-using-the-ec2-console) 섹션을 참조하세요.

## 인바운드 SSH 트래픽 허용
<a name="ec2-instance-connect-setup-security-group"></a>

**Amazon EC2 콘솔을 사용하여 인스턴스에 연결할 때**  
사용자가 Amazon EC2 콘솔을 사용하여 인스턴스에 연결하는 경우, 인스턴스에 도달하기 위해 허용해야 하는 트래픽은 EC2 Instance Connect 서비스에서 생성된 트래픽입니다. 서비스는 특정 IP 주소 범위로 식별되며, 이는 AWS에서 접두사 목록을 통해 관리됩니다. EC2 Instance Connect 서비스에서 인바운드 SSH 트래픽을 허용하는 보안 그룹을 생성해야 합니다. 이를 구성하려면 인바운드 규칙의 경우 **소스** 옆의 필드에서 EC2 Instance Connect 접두사 목록을 선택합니다.

AWS에서는 각 리전에 대한 IPv4 및 IPv6 주소 서로 다른 관리 접두사 목록을 제공합니다. EC2 Instance Connect 접두사 목록의 이름은 다음과 같으며, *리전*은 리전 코드로 대체됩니다.
+ IPv4 접두사 목록 이름: `com.amazonaws.region.ec2-instance-connect`
+ IPv6 접두사 목록 이름: `com.amazonaws.region.ipv6.ec2-instance-connect`

보안 그룹 생성에 대한 자세한 내용은 [작업 2: EC2 Instance Connect 서비스에서 인스턴스로의 인바운드 트래픽 허용](ec2-instance-connect-tutorial.md#eic-tut1-task2) 섹션을 참조하세요. 자세한 내용은 *Amazon VPC 사용 설명서*의 [사용 가능한 AWS 관리형 접두사 목록](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists)을 참조하세요.

**CLI 또는 SSH를 사용하여 인스턴스에 연결할 때**  
인스턴스와 연관된 보안 그룹이 IP 주소 또는 네트워크에서 포트 22를 통한 [인바운드 SSH 트래픽을 허용](security-group-rules-reference.md#sg-rules-local-access)하는지 확인하세요. VPC의 기본 보안 그룹은 기본적으로 수신 SSH 트래픽을 허용하지 않습니다. 인스턴스 시작 마법사에서 생성한 보안 그룹은 기본적으로 수신 SSH 트래픽을 허용합니다. 자세한 내용은 [컴퓨터에서 인스턴스 연결에 대한 규칙](security-group-rules-reference.md#sg-rules-local-access) 섹션을 참조하세요.

## 권한 부여
<a name="eic-prereqs-grant-permissions"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결할 모든 IAM 사용자에게 필요한 권한을 부여해야 합니다. 자세한 내용은 [EC2 Instance Connect에 대한 IAM 권한 부여](ec2-instance-connect-configure-IAM-role.md) 섹션을 참조하세요.

## 로컬 컴퓨터에 SSH 클라이언트 설치
<a name="eic-prereqs-install-ssh-client"></a>

사용자가 SSH를 사용하여 연결하는 경우 로컬 컴퓨터에 SSH 클라이언트가 있어야 합니다.

사용자의 로컬 컴퓨터에는 대개 기본적으로 SSH 클라이언트가 설치되어 있습니다. 사용자는 명령줄에 **ssh**를 입력하여 SSH 클라이언트가 있는지 확인할 수 있습니다. 로컬 컴퓨터가 명령을 인식하지 않는 경우 SSH 클라이언트를 설치할 수 있습니다. Linux 또는 macOS에 SSH 클라이언트를 설치하는 방법은 [http://www.openssh.com](http://www.openssh.com/)을 참조하세요. Windows 10에 SSH 클라이언트를 설치하는 방법은 [OpenSSH in Windows](https://learn.microsoft.com/en-us/windows-server/administration/OpenSSH/openssh-overview)를 참조하세요.

사용자가 Amazon EC2 콘솔만을 사용하여 인스턴스에 연결하는 경우 로컬 컴퓨터에 SSH 클라이언트를 설치할 필요가 없습니다.

## 사용자 이름 요구 사항 충족
<a name="eic-prereqs-username"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결하는 경우 사용자 이름은 다음 요구 사항을 충족해야 합니다.
+ 첫 번째 문자: 문자(`A-Z`, `a-z`), 숫자(`0-9`) 또는 밑줄(`_`)이어야 함
+ 다음 문자: 문자(`A-Z`, `a-z`), 숫자(`0-9`) 또는 다음 문자를 사용할 수 있습니다. `@ . _ -` 
+ 최소 길이: 1자
+ 최대 길이: 31자

# EC2 Instance Connect에 대한 IAM 권한 부여
<a name="ec2-instance-connect-configure-IAM-role"></a>

EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 다음 작업 및 조건에 대한 사용자 권한을 부여하는 IAM 정책을 만들어야 합니다.
+ `ec2-instance-connect:SendSSHPublicKey` 작업 - 퍼블릭 키를 인스턴스에 푸시할 수 있는 권한을 부여합니다.
+ `ec2:osuser` 조건 - 퍼블릭 키를 인스턴스로 푸시할 수 있는 OS 사용자의 이름을 지정합니다. 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. AL2023 및 Amazon Linux 2의 기본 사용자 이름은 `ec2-user`이며 Ubuntu의 경우 `ubuntu`입니다.
+ `ec2:DescribeInstances` 작업 - 래퍼가 이 작업을 호출하기 때문에 EC2 콘솔을 사용할 때 필요합니다. 사용자는 이미 다른 정책에서 이 작업을 호출할 권한을 보유할 수도 있습니다.
+ `ec2:DescribeVpcs` 조치 — IPv6 주소에 연결할 때 필요합니다.

특정 EC2 인스턴스에 대한 액세스 제한을 고려하세요. 그렇지 않은 경우, `ec2-instance-connect:SendSSHPublicKey` 작업에 대한 권한이 있는 모든 IAM 보안 주체가 모든 EC2 인스턴스에 연결할 수 있습니다. 리소스 ARN을 지정하거나 리소스 태그를 [조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html#amazonec2instanceconnect-policy-keys)로 사용하여 액세스를 제한할 수 있습니다.

자세한 내용은 [Amazon EC2 Instance Connect에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html)를 참조하세요.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서**의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

## 사용자가 특정 인스턴스에 연결하도록 허용
<a name="eic-permissions-allow-users-to-connect-to-specific-instances"></a>

다음 IAM 정책은 리소스 ARN으로 식별되는 특정 인스턴스에 연결할 권한을 부여합니다.

다음 예제 IAM 정책에서 다음 작업 및 조건이 지정되어 있습니다.
+ `ec2-instance-connect:SendSSHPublicKey` 작업은 사용자에게 리소스 ARN으로 확인된 두 개의 인스턴스에 연결할 수 있는 권한을 부여합니다. 사용자에게 모든** EC2 인스턴스에 연결할 수 있는 권한을 부여하려면 리소스 ARN을 `*` 와일드카드로 바꿉니다.
+ `ec2:osuser` 조건은 연결할 때 *ami-username*이 지정된 경우에만 인스턴스에 연결할 수 있는 권한을 부여합니다.
+ `ec2:DescribeInstances` 작업은 콘솔을 사용하여 인스턴스에 연결할 사용자에게 권한을 부여하도록 지정됩니다. 사용자가 SSH 클라이언트만을 사용하여 인스턴스에 연결하는 경우 `ec2:DescribeInstances`를 생략할 수 있습니다. `ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.
+ `ec2:DescribeVpcs` 작업은 콘솔을 사용하여 IPv6 주소를 사용하여 인스턴스에 연결할 사용자에게 권한을 부여하도록 지정됩니다. 사용자가 공용 IPv4 주소만 사용할 경우 `ec2:DescribeVpcs`를 생략할 수 있습니다. `ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 사용자가 특정 태그가 있는 인스턴스에 연결하도록 허용
<a name="eic-permissions-allow-users-to-connect-to-instances-with-specific-tags"></a>

속성 기반 액세스 제어(ABAC)는 사용자 및 AWS 리소스에 연결할 수 있는 태그를 기반으로 권한을 정의하는 권한 부여 전략입니다. 리소스 태그를 사용하여 인스턴스에 대한 액세스를 제어할 수 있습니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 사용 설명서**에서 [AWS 리소스에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)를 참조하세요.

다음 예제 IAM 정책에서 `ec2-instance-connect:SendSSHPublicKey` 작업은 인스턴스에 키=`tag-key` 및 값=`tag-value`인 리소스 태그가 있는 조건에서 임의 인스턴스(리소스 ARN에 `*` 와일드카드로 표시됨)에 연결할 수 있는 권한을 사용자에게 부여합니다.

`ec2:DescribeInstances` 작업은 콘솔을 사용하여 인스턴스에 연결할 사용자에게 권한을 부여하도록 지정됩니다. 사용자가 SSH 클라이언트만을 사용하여 인스턴스에 연결하는 경우 `ec2:DescribeInstances`를 생략할 수 있습니다. `ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.

`ec2:DescribeVpcs` 작업은 콘솔을 사용하여 IPv6 주소를 사용하여 인스턴스에 연결할 사용자에게 권한을 부여하도록 지정됩니다. 사용자가 공용 IPv4 주소만 사용할 경우 `ec2:DescribeVpcs`를 생략할 수 있습니다. `ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey", 
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/tag-key": "tag-value"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# EC2 인스턴스에 EC2 Instance Connect를 설치합니다.
<a name="ec2-instance-connect-set-up"></a>

EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결하려면 인스턴스에 EC2 Instance Connect가 설치되어 있어야 합니다. EC2 Instance Connect를 설치하면 인스턴스에 SSH 대몬(daemon)이 구성됩니다.

EC2 Instance Connect 패키지에 대한 자세한 내용은 GitHub 웹 사이트의 [aws/aws-ec2-instance-connect-config](https://github.com/aws/aws-ec2-instance-connect-config)를 참조하세요.

**참고**  
SSH 인증을 위한 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 설정을 구성했다면 EC2 Instance Connect 설치 시 이들 항목이 업데이트가 되지 않습니다. 따라서 EC2 Instance Connect를 사용할 수 없습니다.

## 사전 조건 설치
<a name="ec2-instance-connect-install-prerequisites"></a>

EC2 Instance Connect를 설치하기 전에 다음 사전 조건을 충족해야 합니다.
+ **인스턴스가 다음 중 하나를 사용하는지 확인:**
  + 버전 2.0.20190618 이전의 Amazon Linux 2 \$1
  + AL2023 최소 AMI 또는 Amazon ECS 최적화 AMI
  + CentOS Stream 8 및 9
  + 14.2.1 이전의 macOS Sonoma, 13.6.3 이전의 Ventura 및 12.7.2 이전의 Monterey \$1
  + Red Hat Enterprise Linux(RHEL) 8 및 9
  + Ubuntu 16.04 및 18.04 \$1
**작은 정보**  
\$1 Amazon Linux 2, macOS 및 Ubuntu의 경우: 위에 나열된 버전보다 이후 버전을 사용하여 인스턴스를 시작했다면 EC2 Instance Connect가 사전 설치되어 제공되므로 수동 설치할 필요가 없습니다.
+ **EC2 Instance Connect에 대한 일반 사전 조건을 확인합니다.**

  자세한 내용은 [EC2 Instance Connect 사전 조건](ec2-instance-connect-prerequisites.md) 섹션을 참조하세요.
+ **로컬 시스템에서 SSH 클라이언트를 사용하여 인스턴스에 연결하기 위한 사전 조건을 확인합니다.**

  자세한 내용은 [SSH를 사용하여 Linux 인스턴스에 연결](connect-to-linux-instance.md) 섹션을 참조하세요.
+ **인스턴스의 ID 보기.**

  Amazon EC2 콘솔을 사용하여(**인스턴스 ID(Instance ID)** 열에서) 인스턴스의 ID를 가져올 수 있습니다. 원하는 경우 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)(AWS CLI) 또는 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html)(AWS Tools for Windows PowerShell) 명령을 사용할 수 있습니다.

## EC2 Instance Connect 수동 설치
<a name="ec2-instance-connect-install"></a>

**참고**  
다음 AMI 중 하나를 사용하여 인스턴스를 시작한 경우 EC2 Instance Connect가 사전 설치되어 있으므로 이 절차를 건너뛸 수 있습니다.  
AL2023 표준 AMI
Amazon Linux 2 2.0.20190618 이상
macOS Sonoma 14.2.1 이상
macOS Ventura 13.6.3 이상
macOS Monterey 12.7.2 이상
Ubuntu 20.04 이상

인스턴스의 운영 체제에 따라 다음 절차 중 하나를 사용하여 EC2 Instance Connect를 설치합니다.

------
#### [ Amazon Linux 2 ]

**EC2 Instance Connect로 시작된 인스턴스에 Amazon Linux 2를 설치하려면**

1. SSH를 사용하여 인스턴스에 연결합니다.

   다음 명령에서 예제 값을 사용자의 값으로 바꿉니다. 인스턴스를 시작할 때 인스턴스에 할당된 SSH 키 페어 및 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. Amazon Linux 2의 경우, 기본 사용자 이름은 `ec2-user`입니다.

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   인스턴스 연결에 대한 자세한 내용은 [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md) 주제를 참조하세요.

1. 인스턴스에 EC2 Instance Connect 패키지를 설치합니다.

   ```
   [ec2-user ~]$ sudo yum install ec2-instance-connect
   ```

   `/opt/aws/bin/` 폴더에 3개의 새 스크립트가 표시됩니다.

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (선택 사항) EC2 Instance Connect가 인스턴스에 성공적으로 설치되었는지 확인합니다.

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config
   ```

   `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 행에 다음 값이 포함되어 있으면 EC2 Instance Connect가 성공적으로 설치된 것입니다.

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand`는 `eic_run_authorized_keys` 스크립트를 설정하여 인스턴스 메타데이터에서 키를 찾습니다
   + `AuthorizedKeysCommandUser`는 시스템 사용자를 로 설정합니다.`ec2-instance-connect`
**참고**  
이전에 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 구성한 경우 EC2 Instance Connect 설치가 값을 변경하지 않으며 EC2 Instance Connect를 사용할 수 없습니다.

------
#### [ CentOS ]

**CentOS에서 시작된 인스턴스에 EC2 Instance Connect를 설치하는 방법**

1. SSH로 인스턴스에 연결합니다.

   다음 명령에서 예제 값을 사용자의 값으로 바꿉니다. 인스턴스를 시작할 때 인스턴스에 할당된 SSH 키 페어 및 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. CentOS의 경우 기본 사용자 이름은 `centos` 또는 `ec2-user`입니다.

   ```
   $ ssh -i my_ec2_private_key.pem centos@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   인스턴스 연결에 대한 자세한 내용은 [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md) 섹션을 참조하세요.

1. HTTP 또는 HTTPS 프록시를 사용하는 경우 현재 셸 세션에서 `http_proxy` 또는 `https_proxy` 환경 변수를 설정해야 합니다.

   프록시를 사용하지 않는 경우 이 단계를 건너뛸 수 있습니다.
   + HTTP 프록시 서버의 경우 다음 명령을 실행합니다.

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + HTTPS 프록시 서버의 경우 다음 명령을 실행합니다.

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 다음 명령을 실행하여 인스턴스에 EC2 Instance Connect 패키지를 설치합니다.

   CentOS용 EC2 Instance Connect 구성 파일은 Intel/AMD(x86\$164) 또는 ARM(AArch64)에서 실행되는 인스턴스 유형에 대해 CentOS 8 및 CentOS 9의 경우 다양한 RPM 패키지와 함께 Red Hat Package Manager(RPM) 패키지로 제공됩니다.

   운영 체제 및 CPU 아키텍처에 맞는 명령 블록을 사용합니다.
   + CentOS 8

     Intel/AMD(x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM(AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + CentOS 9

     Intel/AMD(x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM(AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   `/opt/aws/bin/` 폴더에 다음과 같은 새 스크립트가 표시됩니다.

   ```
   eic_run_authorized_keys
   ```

1. (선택 사항) EC2 Instance Connect가 인스턴스에 성공적으로 설치되었는지 확인합니다.
   + CentOS 8의 경우:

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + CentOS 9의 경우:

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 행에 다음 값이 포함되어 있으면 EC2 Instance Connect가 성공적으로 설치된 것입니다.

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand`는 `eic_run_authorized_keys` 스크립트를 설정하여 인스턴스 메타데이터에서 키를 찾습니다
   + `AuthorizedKeysCommandUser`는 시스템 사용자를 로 설정합니다.`ec2-instance-connect`
**참고**  
이전에 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 구성한 경우 EC2 Instance Connect 설치가 값을 변경하지 않으며 EC2 Instance Connect를 사용할 수 없습니다.

------
#### [ macOS ]

**macOS에서 시작된 인스턴스에 EC2 Instance Connect를 설치하는 방법**

1. SSH로 인스턴스에 연결합니다.

   다음 명령에서 예제 값을 사용자의 값으로 바꿉니다. 인스턴스를 시작할 때 인스턴스에 할당된 SSH 키 페어 및 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. macOS 인스턴스의 경우 기본 사용자 이름은 `ec2-user`입니다.

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   인스턴스 연결에 대한 자세한 내용은 [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md) 섹션을 참조하세요.

1. 다음 명령을 사용하여 Homebrew를 업데이트합니다. 업데이트에는 Homebrew에서 알고 있는 소프트웨어가 나열됩니다. EC2 Instance Connect 패키지는 macOS 인스턴스에서 Homebrew를 통해 제공됩니다. 자세한 내용은 [Amazon EC2 인스턴스에서 운영 체제 및 소프트웨어 업데이트](mac-instance-updates.md) 단원을 참조하세요.

   ```
   [ec2-user ~]$ brew update
   ```

1. 인스턴스에 EC2 Instance Connect 패키지를 설치합니다. 그러면 소프트웨어가 설치되고 이를 사용하도록 sshd가 구성됩니다.

   ```
   [ec2-user ~]$ brew install ec2-instance-connect
   ```

   `/opt/aws/bin/` 폴더에 다음과 같은 새 스크립트가 표시됩니다.

   ```
   eic_run_authorized_keys
   ```

1. (선택 사항) EC2 Instance Connect가 인스턴스에 성공적으로 설치되었는지 확인합니다.

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
   ```

   `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 행에 다음 값이 포함되어 있으면 EC2 Instance Connect가 성공적으로 설치된 것입니다.

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand`는 `eic_run_authorized_keys` 스크립트를 설정하여 인스턴스 메타데이터에서 키를 찾습니다
   + `AuthorizedKeysCommandUser`는 시스템 사용자를 로 설정합니다.`ec2-instance-connect`
**참고**  
이전에 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 구성한 경우 EC2 Instance Connect 설치가 값을 변경하지 않으며 EC2 Instance Connect를 사용할 수 없습니다.

------
#### [ RHEL ]

**Red Hat Enterprise Linux(RHEL)에서 시작된 인스턴스에 EC2 Instance Connect를 설치하는 방법**

1. SSH로 인스턴스에 연결합니다.

   다음 명령에서 예제 값을 사용자의 값으로 바꿉니다. 인스턴스를 시작할 때 인스턴스에 할당된 SSH 키 페어 및 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. RHEL의 경우 기본 사용자 이름은 `ec2-user` 또는 `root`입니다.

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   인스턴스 연결에 대한 자세한 내용은 [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md) 섹션을 참조하세요.

1. HTTP 또는 HTTPS 프록시를 사용하는 경우 현재 셸 세션에서 `http_proxy` 또는 `https_proxy` 환경 변수를 설정해야 합니다.

   프록시를 사용하지 않는 경우 이 단계를 건너뛸 수 있습니다.
   + HTTP 프록시 서버의 경우 다음 명령을 실행합니다.

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + HTTPS 프록시 서버의 경우 다음 명령을 실행합니다.

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 다음 명령을 실행하여 인스턴스에 EC2 Instance Connect 패키지를 설치합니다.

   RHEL용 EC2 Instance Connect 구성 파일은 Intel/AMD(x86\$164) 또는 ARM(AArch64)에서 실행되는 인스턴스 유형에 대해 RHEL 8 및 RHEL 9의 경우 다양한 RPM 패키지와 함께 Red Hat Package Manager(RPM) 패키지로 제공됩니다.

   운영 체제 및 CPU 아키텍처에 맞는 명령 블록을 사용합니다.
   + RHEL 8

     Intel/AMD(x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM(AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + RHEL 9

     Intel/AMD(x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM(AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   `/opt/aws/bin/` 폴더에 다음과 같은 새 스크립트가 표시됩니다.

   ```
   eic_run_authorized_keys
   ```

1. (선택 사항) EC2 Instance Connect가 인스턴스에 성공적으로 설치되었는지 확인합니다.
   + RHEL 8의 경우:

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + RHEL 9의 경우:

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 행에 다음 값이 포함되어 있으면 EC2 Instance Connect가 성공적으로 설치된 것입니다.

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand`는 `eic_run_authorized_keys` 스크립트를 설정하여 인스턴스 메타데이터에서 키를 찾습니다
   + `AuthorizedKeysCommandUser`는 시스템 사용자를 로 설정합니다.`ec2-instance-connect`
**참고**  
이전에 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 구성한 경우 EC2 Instance Connect 설치가 값을 변경하지 않으며 EC2 Instance Connect를 사용할 수 없습니다.

------
#### [ Ubuntu ]

**Ubuntu 16.04 이상으로 시작된 인스턴스에 EC2 Instance Connect를 설치하려면**

1. SSH로 인스턴스에 연결합니다.

   다음 명령에서 예제 값을 사용자의 값으로 바꿉니다. 인스턴스를 시작할 때 인스턴스에 할당된 SSH 키 페어를 사용하고 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. Ubuntu AMI의 경우 사용자 이름은 `ubuntu`입니다.

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   인스턴스 연결에 대한 자세한 내용은 [SSH 클라이언트를 사용하여 Linux 인스턴스에 연결](connect-linux-inst-ssh.md) 섹션을 참조하세요.

1. (선택 사항) 인스턴스에 최신 Ubuntu AMI가 있는지 확인합니다.

   다음 명령을 실행하여 인스턴스의 모든 패키지를 업데이트합니다.

   ```
   ubuntu:~$ sudo apt-get update
   ```

   ```
   ubuntu:~$ sudo apt-get upgrade
   ```

1. 인스턴스에 EC2 Instance Connect 패키지를 설치합니다.

   ```
   ubuntu:~$ sudo apt-get install ec2-instance-connect
   ```

   `/usr/share/ec2-instance-connect/` 폴더에 3개의 새 스크립트가 표시됩니다.

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (선택 사항) EC2 Instance Connect가 인스턴스에 성공적으로 설치되었는지 확인합니다.

   ```
   ubuntu:~$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
   ```

   `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser` 행에 다음 값이 포함되어 있으면 EC2 Instance Connect가 성공적으로 설치된 것입니다.

   ```
   AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand`는 `eic_run_authorized_keys` 스크립트를 설정하여 인스턴스 메타데이터에서 키를 찾습니다
   + `AuthorizedKeysCommandUser`는 시스템 사용자를 로 설정합니다.`ec2-instance-connect`
**참고**  
이전에 `AuthorizedKeysCommand` 및 `AuthorizedKeysCommandUser`를 구성한 경우 EC2 Instance Connect 설치가 값을 변경하지 않으며 EC2 Instance Connect를 사용할 수 없습니다.

------

# EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결
<a name="ec2-instance-connect-methods"></a>

다음 지침에서는 Amazon EC2 콘솔, AWS CLI 또는 SSH 클라이언트를 통해 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결하는 방법을 설명합니다.

EC2 Instance Connect를 사용하여 콘솔 또는 AWS CLI를 통해 인스턴스에 연결할 때 EC2 Instance Connect API는 SSH 퍼블릭 키를 자동으로 [인스턴스 메타데이터](ec2-instance-metadata.md)에 푸시하여 60초 동안 유지합니다. 사용자에게 연결된 IAM 정책이 이 작업을 승인합니다. 자체 SSH 키를 사용하는 것을 선호하는 경우 SSH 클라이언트를 사용하고 EC2 Instance Connect를 사용하여 SSH 키를 인스턴스로 명시적으로 푸시할 수 있습니다.

**고려 사항**  
EC2 Instance Connect를 사용하여 인스턴스에 연결한 후 SSH 세션이 종료될 때까지 연결이 유지됩니다. 연결 기간은 IAM 자격 증명 기간에 따라 결정되지 않습니다. IAM 자격 증명이 만료되더라도 연결은 계속 유지됩니다. EC2 Instance Connect 콘솔 환경을 사용할 때 IAM 자격 증명이 만료되면 브라우저 페이지를 닫아 연결을 종료합니다. 자체 SSH 클라이언트와 EC2 Instance Connect를 사용하여 키를 푸시할 때 SSH 제한 시간 값을 설정하여 SSH 세션을 자동으로 종료할 수 있습니다.

**요구 사항**  
시작하기 전에 [사전 조건](ec2-instance-connect-prerequisites.md)을 검토해야 합니다.

**Topics**
+ [Amazon EC2 콘솔을 사용하여 연결](#ec2-instance-connect-connecting-console)
+ [AWS CLI를 사용하여 연결](#connect-linux-inst-eic-cli-ssh)
+ [자체 키 및 SSH 클라이언트를 사용하여 연결](#ec2-instance-connect-connecting-aws-cli)
+ [문제 해결](#ic-troubleshoot)

## Amazon EC2 콘솔을 사용하여 연결
<a name="ec2-instance-connect-connecting-console"></a>

Amazon EC2 콘솔을 통해 EC2 Instance Connect를 사용하여 인스턴스를 연결할 수 있습니다.

**요구 사항**  
Amazon EC2 콘솔을 사용하여 연결하려면 인스턴스에 퍼블릭 IPv4 또는 IPv6 주소가 있어야 합니다. 인스턴스에 프라이빗 IPv4 주소만 있는 경우 [ec2-instance-connect AWS CLI](#connect-linux-inst-eic-cli-ssh)를 사용하여 연결할 수 있습니다.

**Amazon EC2 콘솔을 사용하여 인스턴스에 연결**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택한 다음 **연결**을 선택합니다.

1. **EC2 Instance Connect** 탭을 선택합니다.

1. **퍼블릭 IP를 사용하여 연결**을 선택합니다.

1. 선택권이 있는 경우 연결할 IP 주소를 선택하세요. 그렇게 하지 않으면 IP 주소가 자동으로 선택됩니다.

1. **사용자 이름**에서 사용자 이름을 확인합니다.

1. **연결**을 선택하여 연결을 설정합니다. 브라우저 내 터미널 창이 열립니다.

## AWS CLI를 사용하여 연결
<a name="connect-linux-inst-eic-cli-ssh"></a>

[ec2-instance-connect](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/index.html) AWS CLI를 사용하여 SSH 클라이언트로 인스턴스에 연결할 수 있습니다. EC2 Instance Connect는 지정된 연결 유형에 따라 사전 정의된 순서로 사용 가능한 IP 주소를 사용하여 연결을 설정하려고 시도합니다. IP 주소를 사용할 수 없는 경우 자동으로 그 다음 IP 주소를 순서대로 시도합니다.연결 유형

`auto`(기본값)  
EC2 Instance Connect는 다음 순서와 해당 연결 유형으로 인스턴스의 IP 주소를 사용하여 연결을 시도합니다.  

1. 퍼블릭 IPv4: `direct`

1. 프라이빗 IPv4: `eice`

1. IPv6: `direct`

`direct`  
EC2 Instance Connect는 다음 순서로 인스턴스의 IP 주소를 사용하여 연결을 시도합니다.  

1. 퍼블릭 IPv4

1. IPv6

1. 프라이빗 IPv4(EC2 Instance Connect 엔드포인트를 통해 연결되지 않음)

`eice`  
EC2 Instance Connect는 인스턴스의 프라이빗 IPv4 주소와 [EC2 Instance Connect 엔드포인트](connect-with-ec2-instance-connect-endpoint.md)를 사용하여 연결을 시도합니다.

**참고**  
`auto` 연결 유형의 동작은 향후 변경될 수도 있습니다. 원하는 연결 유형이 사용되도록 `--connection-type`을 `direct` 또는 `eice`로 명시적으로 설정하는 것이 좋습니다.

**요구 사항**  
AWS CLI 버전 2를 사용해야 합니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

**인스턴스 ID를 사용하여 인스턴스에 연결**  
인스턴스 ID만 알고 있고, 인스턴스에 연결할 때 사용할 연결 유형을 EC2 Instance Connect가 결정하도록 설정하려면 인스턴스 ID와 함께 CLI 명령 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html)를 사용합니다.

```
aws ec2-instance-connect ssh --instance-id i-1234567890example
```

**인스턴스 ID 및 EC2 Instance Connect 엔드포인트를 사용하여 인스턴스에 연결**  
[EC2 Instance Connect 엔드포인트](connect-with-ec2-instance-connect-endpoint.md)를 통해 인스턴스에 연결하려면 앞선 명령을 사용하고 `--connection-type` 파라미터를 `eice` 값으로 지정합니다.

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice
```

**인스턴스 ID와 자체 프라이빗 키 파일을 사용하여 인스턴스에 연결**  
자체 프라이빗 키를 사용하여 EC2 Instance Connect 엔드포인트를 통해 인스턴스에 연결하려면 인스턴스 ID와 프라이빗 키 파일의 경로를 지정합니다. 경로에 *file://*을 포함하지 마세요. 예를 들어 *file:///path/to/key*를 사용하면 실패합니다.

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --private-key-file /path/to/key.pem
```

**작은 정보**  
이 명령을 사용할 때 오류가 발생하면 AWS CLI 버전 2를 사용하고 있는지 확인해야 합니다. `ssh` 명령은 이 메이저 버전에서만 사용 가능하기 때문입니다. 또한 최신 기능에 액세스하려면 AWS CLI 버전 2의 최신 마이너 버전으로 정기적으로 업데이트하는 것이 좋습니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 버전 2 정보](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html#welcome-versions-v2)를 참조하세요.

## 자체 키 및 SSH 클라이언트를 사용하여 연결
<a name="ec2-instance-connect-connecting-aws-cli"></a>

자체 SSH 키를 사용하고 한편으로 EC2 Instance Connect API를 사용하면서 선택한 SSH 클라이언트의 인스턴스에 연결할 수 있습니다. 이를 통해 EC2 Instance Connect 기능에서 퍼블릭 키를 인스턴스로 푸시할 수 있습니다. 이 연결 방법은 퍼블릭 및 프라이빗 IP 주소가 있는 인스턴스에서 작동합니다.

**요구 사항**
+ 키 페어에 대한 요구 사항
  + 지원되는 유형: RSA(OpenSSH 및 SSH2) 및 ED25519
  + 지원되는 길이: 2,048 및 4,096
  + 자세한 내용은 [서드 파티 도구를 사용하여 키 페어를 생성하고 Amazon EC2로 퍼블릭 키 가져오기](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws) 섹션을 참조하세요.
+ 프라이빗 IP 주소만 있는 인스턴스에 연결하는 경우 SSH 세션을 시작하는 로컬 컴퓨터에서 EC2 Instance Connect 서비스 엔드포인트(인스턴스에 SSH 퍼블릭 키를 푸시하는 경우)에 연결하고 인스턴스의 프라이빗 IP 주소에 네트워크로 연결하여 SSH 세션을 설정해야 합니다. 인터넷 또는 Direct Connect 퍼블릭 가상 인터페이스를 통해 EC2 Instance Connect 서비스 엔드포인트에 연결할 수 있습니다. 인스턴스의 프라이빗 IP 주소에 연결하려면 [Direct Connect](https://aws.amazon.com/directconnect/), [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) 또는 [VPC 피어링](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)과 같은 서비스를 활용하면 됩니다.

**자체 키 및 SSH 클라이언트를 사용하여 인스턴스에 연결하려면**

1. 

**(선택 사항) 새로운 SSH 프라이빗 및 퍼블릭 키를 생성합니다.**

   다음 명령을 사용하여 새로운 SSH 프라이빗 및 퍼블릭 키 `my_key` 및 `my_key.pub`을 생성할 수 있습니다.

   ```
   ssh-keygen -t rsa -f my_key
   ```

1. 

**SSH 퍼블릭 키를 인스턴스에 푸시합니다.**

   [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html) 명령을 사용하여 SSH 퍼블릭 키를 인스턴스에 푸시하세요. AL2023 또는 Amazon Linux 2를 사용하여 인스턴스를 시작한 경우 AMI의 기본 사용자 이름은 `ec2-user`입니다. Ubuntu를 사용하여 인스턴스를 시작한 경우 AMI의 기본 사용자 이름은 `ubuntu`입니다.

   다음 예는 지정된 가용 영역에 있는 지정된 인스턴스에 퍼블릭 키를 푸시하여 `ec2-user`를 인증합니다.

   ```
   aws ec2-instance-connect send-ssh-public-key \
       --region us-west-2 \
       --availability-zone us-west-2b \
       --instance-id i-001234a4bf70dec41EXAMPLE \
       --instance-os-user ec2-user \
       --ssh-public-key file://my_key.pub
   ```

1. 

**프라이빗 키를 사용하여 인스턴스에 연결합니다.**

   **ssh** 명령을 사용하여 퍼블릭 키가 인스턴스 메타데이터에서 제거되기 전에 프라이빗 키를 사용하여 인스턴스에 연결합니다(제거되기 전에 60초가 주어짐). 퍼블릭 키에 해당하는 프라이빗 키, 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름 및 인스턴스의 퍼블릭 DNS 이름을 지정합니다(프라이빗 네트워크를 통해 연결하는 경우 프라이빗 DNS 이름 또는 IP 주소 지정). ssh 구성의 파일과 지정된 키만 연결에 사용되도록 하려면 `IdentitiesOnly=yes` 옵션을 추가합니다.

   ```
   ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

   다음 예제에서는 `timeout 3600`을 사용하여 SSH 세션이 1시간 후에 종료되도록 설정합니다. 세션 중에 시작된 프로세스는 세션이 종료된 후에도 인스턴스에서 계속 실행될 수 있습니다.

   ```
   timeout 3600 ssh -o “IdentitiesOnly=yes” -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

## 문제 해결
<a name="ic-troubleshoot"></a>

인스턴스에 연결을 시도하는 동안 오류가 발생한 경우 다음 섹션을 참조하세요.
+ [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md)
+ [EC2 Instance Connect를 사용하여 EC2 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 하나요?](https://repost.aws/knowledge-center/ec2-instance-connect-troubleshooting)

# EC2 Instance Connect 제거
<a name="ec2-instance-connect-uninstall"></a>

EC2 Instance Connect를 비활성화하려면 Linux 인스턴스에 연결하여 OS에 설치된 `ec2-instance-connect` 패키지를 제거하세요. `sshd` 구성이 EC2 Instance Connect 설치 시 적용한 설정과 일치할 경우, `ec2-instance-connect` 제거 시 `sshd` 구성도 제거됩니다. EC2 Instance Connect 설치 후 `sshd` 구성을 수정했다면 이 구성을 수동으로 업데이트해야 합니다.

------
#### [ Amazon Linux ]

EC2 Instance Connect이 사전 구성된 AL2023 및 Amazon Linux 2 2.0.20190618 이상에서 EC2 Instance Connect를 제거할 수 있습니다.

**Amazon Linux를 사용하여 시작된 인스턴스에서 EC2 Instance Connect 제거**

1. SSH로 인스턴스에 연결합니다. AL2023 또는 Amazon Linux 2 AMI의 기본 사용자 이름(`ec2-user`) 및 인스턴스를 시작할 때 인스턴스에서 사용한 SSH 키 페어를 지정합니다.

   예를 들어 다음 **ssh** 명령은 키 페어 `ec2-a-b-c-d.us-west-2.compute.amazonaws.com`를 사용하여 퍼블릭 DNS 이름 `my_ec2_private_key.pem`에 연결됩니다.

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. `ec2-instance-connect` 명령을 사용하여 **yum** 패키지를 제거합니다.

   ```
   [ec2-user ~]$ sudo yum remove ec2-instance-connect
   ```

------
#### [ Ubuntu ]

**Ubuntu AMI를 사용하여 시작된 인스턴스에서 EC2 Instance Connect 제거**

1. SSH로 인스턴스에 연결합니다. 인스턴스를 시작할 때 사용한 SSH 키 페어와 Ubuntu AMI의 기본 사용자 이름(`ubuntu`)을 지정합니다.

   예를 들어 다음 **ssh** 명령은 키 페어 `ec2-a-b-c-d.us-west-2.compute.amazonaws.com`를 사용하여 퍼블릭 DNS 이름 `my_ec2_private_key.pem`에 연결됩니다.

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. `ec2-instance-connect` 명령을 사용하여 **apt-get** 패키지를 제거합니다.

   ```
   ubuntu:~$ sudo apt-get remove ec2-instance-connect
   ```

------

# 프라이빗 IP 주소와 EC2 Instance Connect 엔드포인트를 사용하여 인스턴스에 연결
<a name="connect-with-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect 엔드포인트를 사용하면 Bastion Host를 사용하거나 가상 프라이빗 클라우드(VPC)에서 인터넷에 직접 연결하지 않고도 인터넷에서 인스턴스에 안전하게 연결할 수 있습니다.

**이점**
+ 인스턴스에 퍼블릭 IPv4 또는 IPv6 주소가 없어도 인스턴스에 연결할 수 있습니다. AWS는 실행 중인 인스턴스 및 탄력적 IP 주소와 연결된 퍼블릭 IPv4 주소를 포함하여 모든 퍼블릭 IPv4 주소에 대해 요금을 청구합니다. 자세한 내용은 [Amazon VPC 요금 페이지](https://aws.amazon.com/vpc/pricing/)의 **퍼블릭 IPv4 주소** 탭을 참조하세요.
+ [인터넷 게이트웨이](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)를 통해 VPC에서 인터넷에 직접 연결하지 않고도 인터넷에서 인스턴스에 연결할 수 있습니다.
+ [IAM 정책 및 권한](permissions-for-ec2-instance-connect-endpoint.md)으로 인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트의 생성 및 사용에 대한 액세스를 제어할 수 있습니다.
+ 인스턴스에 연결하려는 모든 시도(성공 및 실패)는 [CloudTrail](log-ec2-instance-connect-endpoint-using-cloudtrail.md)에 기록됩니다.

**가격 책정**  
EC2 Instance Connect 엔드포인트를 사용하는 데 추가 비용은 없습니다. EC2 Instance Connect 엔드포인트를 사용하여 서로 다른 가용 영역의 인스턴스에 연결하는 경우 가용 영역 간 [데이터 전송에 대한 추가 요금](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer_within_the_same_AWS_Region)이 청구됩니다.

**Topics**
+ [작동 방식](#how-eice-works)
+ [고려 사항](#ec2-instance-connect-endpoint-prerequisites)
+ [권한](permissions-for-ec2-instance-connect-endpoint.md)
+ [보안 그룹](eice-security-groups.md)
+ [EC2 Instance Connect 엔드포인트 생성](create-ec2-instance-connect-endpoints.md)
+ [EC2 Instance Connect 엔드포인트 수정](modify-ec2-instance-connect-endpoint.md)
+ [EC2 Instance Connect 엔드포인트 삭제](delete-ec2-instance-connect-endpoint.md)
+ [인스턴스에 연결](connect-using-eice.md)
+ [연결 기록](log-ec2-instance-connect-endpoint-using-cloudtrail.md)
+ [서비스 연결 역할](eice-slr.md)
+ [할당량](eice-quotas.md)

## 작동 방식
<a name="how-eice-works"></a>

EC2 Instance Connect 엔드포인트는 자격 증명을 인식하는 TCP 프록시입니다. EC2 Instance Connect 엔드포인트 서비스는 IAM 엔터티의 자격 증명을 사용하여 컴퓨터에서 엔드포인트로 연결되는 프라이빗 터널을 설정합니다. 트래픽은 VPC에 도달하기 전에 인증 및 승인됩니다.

인스턴스로의 인바운드 트래픽을 제한하는 [추가 보안 그룹 규칙](eice-security-groups.md)을 구성할 수 있습니다. 예를 들어 인바운드 규칙을 사용하여 EC2 Instance Connect 엔드포인트에서 생성되는 트래픽만 관리 포트에서 허용할 수 있습니다.

엔드포인트가 VPC의 모든 서브넷에 있는 모든 인스턴스에 연결할 수 있도록 라우팅 테이블 규칙을 구성할 수 있습니다.

다음 다이어그램은 사용자가 EC2 Instance Connect 엔드포인트를 사용하여 인터넷에서 인스턴스에 연결하는 방법을 보여줍니다. 먼저 서브넷 A에서 **EC2 Instance Connect 엔드포인트**를 생성합니다. 서브넷의 엔드포인트에 대한 네트워크 인터페이스를 생성합니다. 그러면 VPC의 인스턴스로 향하는 트래픽의 진입점 역할을 합니다. 서브넷 B의 라우팅 테이블이 서브넷 A에서 생성되는 트래픽을 허용하는 경우 엔드포인트를 사용하여 서브넷 B의 인스턴스에 도달할 수 있습니다.

![\[EC2 Instance Connect 엔드포인트 흐름의 개요.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint.png)


## 고려 사항
<a name="ec2-instance-connect-endpoint-prerequisites"></a>

시작하기 전에 다음을 고려합니다.
+ EC2 Instance Connect 엔드포인트는 대용량 데이터 전송이 아닌 관리 트래픽 사용 사례를 위해 특별히 고안되었습니다. 대용량 데이터 전송이 제한됩니다.
+ EC2 Instance Connect 엔드포인트를 생성하여 프라이빗 IPv4 주소 또는 IPv6 주소가 있는 인스턴스에 대한 트래픽을 지원할 수 있습니다. 엔드포인트의 IP 주소 유형은 인스턴스의 IP 주소와 일치해야 합니다. 모든 IP 주소 유형을 지원하는 엔드포인트를 생성할 수 있습니다.
+ (Linux 인스턴스) 자체 키 페어를 사용하는 경우 모든 Linux AMI를 사용할 수 있습니다. 그렇지 않으면 인스턴스에 EC2 Instance Connect를 설치해야 합니다. EC2 Instance Connect를 포함하는 AMI 및 지원되는 다른 AMI에 EC2 Instance Connect를 설치하는 방법에 대한 자세한 내용은 [EC2 Instance Connect 설치](ec2-instance-connect-set-up.md) 섹션을 참조하세요.
+ EC2 Instance Connect 엔드포인트에 보안 그룹을 할당할 수 있습니다. 그렇지 않으면 VPC에 대한 기본 보안 그룹을 사용합니다. EC2 Instance Connect 엔드포인트의 보안 그룹은 대상 인스턴스로의 아웃바운드 트래픽을 허용해야 합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 보안 그룹](eice-security-groups.md) 섹션을 참조하세요.
+ 요청을 인스턴스로 라우팅할 때 클라이언트의 소스 IP 주소를 보존하도록 EC2 Instance Connect 엔드포인트를 구성할 수 있습니다. 그렇지 않으면 네트워크 인터페이스의 IP 주소는 모든 수신 트래픽에 대한 클라이언트 IP 주소가 됩니다.
  + 클라이언트 IP 보존을 켜면 인스턴스의 보안 그룹에서 클라이언트의 트래픽을 허용해야 합니다. 또한 인스턴스는 EC2 Instance Connect 엔드포인트와 동일한 VPC에 있어야 합니다.
  + 클라이언트 IP 보존을 끄면 인스턴스의 보안 그룹에서 VPC의 트래픽을 허용해야 합니다. 이 값이 기본값입니다.
  + 클라이언트 IP 보존은 IPv4 EC2 Instance Connect 엔드포인트에서만 지원됩니다. 클라이언트 IP 보존을 사용하려면 EC2 Instance Connect 엔드포인트의 IP 주소 유형이 IPv4여야 합니다. IP 주소 유형이 듀얼 스택 또는 IPv6인 경우에는 클라이언트 IP 보존이 지원되지 않습니다.
  + 다음 인스턴스 유형, C1, CG1, CG2, G1, HI1, M1, M2, M3, T1은 클라이언트 IP 보존을 지원하지 않습니다. 클라이언트 IP 보존을 켜고 EC2 Instance Connect 엔드포인트를 사용하여 이러한 인스턴스 유형 중 하나의 인스턴스에 연결하려고 하면 연결에 실패합니다.
  + 트래픽이 전송 게이트웨이를 통해 라우팅되면 클라이언트 IP 보존이 지원되지 않습니다.
+ EC2 Instance Connect 엔드포인트를 생성할 때 AWS Identity and Access Management(IAM)의 Amazon EC2 서비스에 대해 서비스 연결 역할이 자동으로 생성됩니다. Amazon EC2는 서비스 연결 역할을 사용하여 계정에 네트워크 인터페이스를 프로비저닝하며, 이 인터페이스는 EC2 Instance Connect 엔드포인트를 생성할 때 필요합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할](eice-slr.md) 섹션을 참조하세요.
+ VPC 및 서브넷당 1개의 EC2 Instance Connect 엔드포인트만 생성할 수 있습니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트의 할당량](eice-quotas.md) 섹션을 참조하세요. 동일한 VPC 내의 다른 가용 영역에 다른 EC2 Instance Connect 엔드포인트를 생성해야 하는 경우 먼저 기존 EC2 Instance Connect 엔드포인트를 삭제해야 합니다. 그렇지 않으면 할당량 오류가 발생합니다.
+ 각 EC2 인스턴스 연결 엔드포인트는 최대 20개의 동시 연결을 지원할 수 있습니다.
+ 설정된 TCP 연결의 최대 지속 시간은 1시간(3,600초)입니다. IAM 정책에서 허용되는 최대 지속 시간을 지정할 수 있습니다(최대 3,600초). 자세한 내용은 [인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel) 섹션을 참조하세요.

  연결 기간은 IAM 자격 증명 기간에 따라 결정되지 않습니다. IAM 자격 증명이 만료된 경우 지정된 최대 기간에 도달할 때까지 연결이 계속 유지됩니다. EC2 Instance Connect 엔드포인트 콘솔 환경을 사용하여 인스턴스에 연결할 때 **최대 터널 기간(초)**을 IAM 자격 증명 기간보다 작은 값으로 설정합니다. IAM 자격 증명이 조기에 만료되는 경우 브라우저 페이지를 닫아 인스턴스에 대한 연결을 종료합니다.

# EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한 부여
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

기본적으로 IAM 엔터티에는 EC2 Instance Connect 엔드포인트를 생성, 설명 또는 수정할 수 있는 권한이 없습니다. IAM 관리자는 필요한 리소스에서 특정 작업을 수행하는 데 필요한 권한을 부여하는 IAM 정책을 생성할 수 있습니다.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서**의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

다음 예제 정책에서는 EC2 Instance Connect 엔드포인트에 대해 필요한 권한을 제어하는 방법을 보여줍니다.

**Topics**
+ [EC2 Instance Connect 엔드포인트 생성, 설명, 수정, 삭제할 수 있는 권한](#iam-CreateInstanceConnectEndpoint)
+ [인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한](#iam-OpenTunnel)
+ [특정 IP 주소 범위에서만 연결할 수 있는 권한](#iam-sourceip)

## EC2 Instance Connect 엔드포인트 생성, 설명, 수정, 삭제할 수 있는 권한
<a name="iam-CreateInstanceConnectEndpoint"></a>

EC2 Instance Connect 엔드포인트를 생성하고 수정하려면 사용자에게 다음 작업에 대한 권한이 필요합니다.
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `iam:CreateServiceLinkedRole`

EC2 Instance Connect 엔드포인트를 설명 및 삭제하려면 사용자에게 다음 작업에 대한 권한이 필요합니다.
+ `ec2:DescribeInstanceConnectEndpoints` 
+ `ec2:DeleteInstanceConnectEndpoint`

모든 서브넷에서 EC2 Instance Connect 엔드포인트의 생성, 설명, 수정, 삭제 권한을 부여하는 정책을 생성할 수 있습니다. 또는 서브넷 ARN을 허용된 `Resource`로 지정하거나 `ec2:SubnetID` 조건 키를 사용하여 지정된 서브넷에 대한 작업만 제한할 수 있습니다. `aws:ResourceTag` 조건 키를 사용하여 특정 태그를 사용한 엔드포인트 생성을 명시적으로 허용하거나 거부할 수도 있습니다. 자세한 내용은 *IAM 사용 설명서*에서 [IAM의 정책 및 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.

**IAM 정책 예제**

다음 IAM 정책 예제에서 `Resource` 섹션은 별표(`*`)로 지정된 모든 서브넷에서 엔드포인트를 생성, 수정, 삭제할 수 있는 권한을 부여합니다. `ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.

## 인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한
<a name="iam-OpenTunnel"></a>

`ec2-instance-connect:OpenTunnel` 작업은 EC2 Instance Connect 엔드포인트를 통해 연결하도록 인스턴스에 대한 TCP 연결을 설정하는 권한을 부여합니다. 사용할 EC2 Instance Connect 엔드포인트를 지정할 수 있습니다. 또는 별표(`*`)가 있는 `Resource`를 사용하면 사용 가능한 모든 EC2 Instance Connect 엔드포인트를 사용할 수 있습니다. 조건 키로서 리소스 태그의 존재 여부에 따라 인스턴스에 대한 액세스를 제한할 수도 있습니다.

**조건**
+ `ec2-instance-connect:remotePort` - TCP 연결 설정에 사용할 수 있는 인스턴스의 포트. 이 조건 키가 사용되는 경우 정책에 지정된 포트가 아닌 다른 포트에서 인스턴스에 연결하려고 하면 오류가 발생합니다.
+ `ec2-instance-connect:privateIpAddress` - TCP 연결을 설정하려는 인스턴스와 연결된 대상 프라이빗 IP 주소. 단일 IP 주소(예: `10.0.0.1/32`)를 지정하거나 CIDR을 통해 IP 범위(예: `10.0.1.0/28`)를 지정할 수 있습니다. 이 조건 키가 사용될 때 프라이빗 IP 주소가 다르거나 CIDR 범위를 벗어난 인스턴스에 연결하려고 하면 오류가 발생합니다.
+ `ec2-instance-connect:maxTunnelDuration` - 설정된 TCP 연결의 최대 지속 시간. 단위는 초이며, 지속 시간은 최소 1초에서 최대 3,600초(1시간)입니다. 조건이 지정되지 않은 경우 기본 지속 시간은 3,600초(1시간)로 설정됩니다. IAM 정책에 지정된 지속 시간보다 오래 또는 기본 최대값보다 긴 지속 시간 동안 인스턴스에 연결하려고 시도하면 오류가 발생합니다. 지정된 지속 시간이 지나면 연결이 해제됩니다.

  `maxTunnelDuration`이 IAM 정책에 지정되고 지정된 값이 3,600초(기본값) 미만인 경우 인스턴스에 연결할 때 명령에 `--max-tunnel-duration`을 지정해야 합니다. 인스턴스 연결 방법에 대한 자세한 내용은 [EC2 인스턴스 연결 엔드포인트를 사용하여 Amazon EC2 인스턴스에 연결](connect-using-eice.md) 섹션을 참조하세요.

또한 EC2 Instance Connect 엔드포인트의 리소스 태그 존재 여부에 따라 사용자에게 인스턴스에 대한 연결을 설정할 권한을 부여할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*에서 [IAM의 정책 및 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.

Linux 인스턴스의 경우 `ec2-instance-connect:SendSSHPublicKey` 작업은 인스턴스에 공개 키를 푸시할 수 있는 권한을 부여합니다. `ec2:osuser` 조건은 퍼블릭 키를 인스턴스에 푸시할 수 있는 OS(운영 체제) 사용자의 이름을 지정합니다. 인스턴스를 시작하는 데 사용한 [AMI의 기본 사용자 이름](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)을 사용합니다. 자세한 내용은 [EC2 Instance Connect에 대한 IAM 권한 부여](ec2-instance-connect-configure-IAM-role.md) 섹션을 참조하세요.

**IAM 정책 예제**

다음 IAM 정책 예제는 IAM 보안 주체가 지정된 엔드포인트 ID `eice-123456789abcdef`로 식별되는 지정된 EC2 인스턴스 연결 엔드포인트만 사용하여 인스턴스에 연결할 수 있도록 허용합니다. 모든 조건이 충족되는 경우에만 연결이 성공적으로 설정됩니다.

**참고**  
`ec2:Describe*` API 작업은 리소스 수준 권한을 지원하지 않습니다. 따라서 `Resource` 요소에 `*` 와일드카드가 필요합니다.

------
#### [ Linux ]

이 예에서는 인스턴스에 대한 연결이 -포트 22(SSH)에서 설정되었는지, 인스턴스의 프라이빗 IP 주소가 `10.0.1.0/31` 범위(`10.0.1.0`\$1`10.0.1.1` 사이)에 있는지와 `maxTunnelDuration`이 `3600`초 이하인지 평가합니다. `3600`초(1시간) 후에 연결이 해제됩니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ Windows ]

이 예에서는 인스턴스에 대한 연결이 포트 3389(RDP)에서 설정되었는지, 인스턴스의 프라이빗 IP 주소가 `10.0.1.0/31` 범위(`10.0.1.0`\$1`10.0.1.1`)에 있는지와 `maxTunnelDuration`이 `3600`초 이하인지 평가합니다. `3600`초(1시간) 후에 연결이 해제됩니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "3389"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

------

## 특정 IP 주소 범위에서만 연결할 수 있는 권한
<a name="iam-sourceip"></a>

다음 IAM 정책 예제는 정책에 지정된 IP 주소 범위 내의 IP 주소에서 연결하는 조건으로 IAM 보안 주체의 인스턴스 연결을 허용합니다. IAM 보안 주체가 `192.0.2.0/24`에 없는 IP 주소(예: 이 정책의 IP 주소 범위)에서 `OpenTunnel`을 직접 호출하는 경우 응답은 `Access Denied`입니다. 자세한 내용은 IAM 사용 설명서**에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) 섹션을 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "192.0.2.0/24"
                },
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# EC2 Instance Connect 엔드포인트 보안 그룹
<a name="eice-security-groups"></a>

보안 그룹은 연결된 리소스에 도달하고 나갈 수 있는 트래픽을 제어합니다. 예를 들어, Amazon EC2 인스턴스에 연결된 보안 그룹에서 특별히 허용하지 않는 한, 해당 인스턴스에서 송수신되는 트래픽을 거부합니다.

다음 예제에서는 EC2 Instance Connect 엔드포인트 및 대상 인스턴스에 대한 보안 그룹 규칙을 구성하는 방법을 보여줍니다.

**Topics**
+ [EC2 Instance Connect 엔드포인트 보안 그룹 규칙](#eice-security-group-rules)
+ [대상 인스턴스 보안 그룹 규칙](#resource-security-group-rules)

## EC2 Instance Connect 엔드포인트 보안 그룹 규칙
<a name="eice-security-group-rules"></a>

EC2 Instance Connect 엔드포인트의 보안 그룹 규칙을 통해 대상 인스턴스를 대상으로 하는 아웃바운드 트래픽이 엔드포인트를 떠날 수 있습니다. VPC의 IPv4 또는 IPv6 주소 범위나 인스턴스 보안 그룹을 대상으로 지정할 수 있습니다.

엔드포인트로 향하는 트래픽은 EC2 Instance Connect 엔드포인트 서비스에서 시작되며, 엔드포인트 보안 그룹의 인바운드 규칙과 상관없이 허용됩니다. EC2 Instance Connect 엔드포인트를 사용하여 인스턴스에 연결할 수 있는 사용자를 제어하려면 IAM 정책을 사용합니다. 자세한 내용은 [인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel) 섹션을 참조하세요.

**아웃바운드 규칙 예제: 보안 그룹 참조**  
다음 예제에서는 보안 그룹 참조를 사용합니다. 즉, 대상은 대상 인스턴스와 연결된 보안 그룹입니다. 이 규칙은 엔드포인트에서 이 보안 그룹을 사용하는 모든 인스턴스로의 아웃바운드 트래픽을 허용합니다.


| 프로토콜 | Destination | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | 인스턴스 보안 그룹의 ID | 22 | 인스턴스 보안 그룹과 연결된 모든 인스턴스로의 아웃바운드 SSH 트래픽 허용 | 

**아웃바운드 규칙 예제: IPv4 주소 범위**  
다음 예제에서는 지정된 IPv4 주소 범위로의 아웃바운드 트래픽을 허용합니다. 인스턴스의 IPv4 주소는 서브넷에서 할당되므로 VPC의 IPv4 주소 범위를 사용할 수 있습니다.


| 프로토콜 | Destination | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | VPC IPv4 CIDR | 22 | VPC로의 아웃바운드 SSH 트래픽 허용 | 

**아웃바운드 규칙 예제: IPv6 주소 범위**  
다음 예제에서는 지정된 IPv6 주소 범위로의 아웃바운드 트래픽을 허용합니다. 인스턴스의 IPv6 주소는 서브넷에서 할당되므로 VPC의 IPv6 주소 범위를 사용할 수 있습니다.


| 프로토콜 | Destination | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | VPC IPv6 CIDR | 22 | VPC로의 아웃바운드 SSH 트래픽 허용 | 

## 대상 인스턴스 보안 그룹 규칙
<a name="resource-security-group-rules"></a>

대상 인스턴스의 보안 그룹 규칙에서는 EC2 Instance Connect 엔드포인트에서 생성되는 인바운드 트래픽을 허용해야 합니다. IPv4 또는 IPv6 주소 범위나 엔드포인트 보안 그룹을 소스로 지정할 수 있습니다. IPv4 주소 범위를 지정하는 경우 소스는 클라이언트 IP 보존이 켜졌는지, 꺼졌는지에 따라 달라집니다. 자세한 내용은 [고려 사항](connect-with-ec2-instance-connect-endpoint.md#ec2-instance-connect-endpoint-prerequisites) 섹션을 참조하세요.

보안 그룹은 상태를 저장하므로, 인스턴스 보안 그룹의 아웃바운드 규칙과 상관없이 응답 트래픽이 VPC를 떠날 수 있습니다.

**인바운드 규칙 예제: 보안 그룹 참조**  
다음 예제에서는 보안 그룹 참조를 사용합니다. 즉, 소스는 엔드포인트와 연결된 보안 그룹입니다. 이 규칙에서는 클라이언트 IP 보존이 켜졌는지, 꺼졌는지에 상관없이 엔드포인트에서 이 보안 그룹을 사용하는 모든 인스턴스로의 인바운드 SSH 트래픽을 허용합니다. SSH에 대한 다른 인바운드 보안 그룹 규칙이 없는 경우 인스턴스는 엔드포인트에서의 SSH 트래픽만 수락합니다.


| 프로토콜 | 소스 | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | 엔드포인트 보안 그룹 ID | 22 | 엔드포인트 보안 그룹과 연결된 리소스의 인바운드 SSH 트래픽 허용 | 

**인바운드 규칙 예제: 클라이언트 IP 보존 꺼짐**  
다음 예제에서는 지정된 IPv4 주소 범위의 인바운드 SSH 트래픽을 허용합니다. 클라이언트 IP 보존이 꺼져 있으므로 소스 IPv4 주소는 엔드포인트 네트워크 인터페이스의 주소입니다. 엔드포인트 네트워크 인터페이스의 주소는 해당 서브넷에서 할당되므로 VPC의 IPv4 주소 범위를 사용하여 VPC의 모든 인스턴스에 대한 연결을 허용할 수 있습니다.


| 프로토콜 | 소스 | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | VPC IPv4 CIDR | 22 | VPC의 인바운드 SSH 트래픽 허용 | 

**인바운드 규칙 예제: 클라이언트 IP 보존 켜짐**  
다음 예제에서는 지정된 IPv4 주소 범위의 인바운드 SSH 트래픽을 허용합니다. 클라이언트 IP 보존이 켜져 있으므로 소스 IPv4 주소는 클라이언트의 주소입니다.


| 프로토콜 | 소스 | 포트 범위 | 설명 | 
| --- | --- | --- | --- | 
| TCP | 퍼블릭 IPv4 주소 범위 | 22 | 지정된 클라이언트 IPv4 주소 범위에서의 인바운드 트래픽 허용 | 

# EC2 Instance Connect 엔드포인트 생성
<a name="create-ec2-instance-connect-endpoints"></a>

인스턴스에 대한 보안 연결을 허용하는 EC2 Instance Connect 엔드포인트를 생성할 수 있습니다.

**고려 사항**
+ **공유 서브넷** - 사용자와 공유된 서브넷에서 EC2 Instance Connect 엔드포인트를 생성할 수 있습니다. 그러나 사용자와 공유된 서브넷에서 VPC 소유자가 생성한 EC2 Instance Connect 엔드포인트를 사용할 수 없습니다.
+ **IP 주소 유형** - EC2 Instance Connect 엔드포인트는 서브넷과 호환되어야 하는 다음 주소 유형을 지원합니다.
  + `ipv4` - 프라이빗 IPv4 주소가 있는 EC2 인스턴스에만 연결합니다.
  + `dualstack` - 프라이빗 IPv4 주소 또는 IPv6 주소가 있는 EC2 인스턴스에 연결합니다.
  + `ipv6` - IPv6 주소가 있는 EC2 인스턴스에만 연결합니다.

**사전 조건**  
EC2 Instance Connect 엔드포인트를 생성하려면 필요한 IAM 권한이 있어야 합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 생성, 설명, 수정, 삭제할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint) 섹션을 참조하세요.

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

**EC2 Instance Connect 엔드포인트 생성**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **엔드포인트**를 선택합니다.

1. **엔드포인트 생성**을 선택하고 다음과 같이 엔드포인트 설정을 지정합니다.

   1. (선택 사항) **이름 태그**에 엔드포인트의 이름을 입력합니다.

   1. **유형**에서 **EC2 Instance Connect 엔드포인트**를 선택합니다.

   1. **VPC**의 **네트워크 설정**에서 대상 인스턴스가 있는 VPC를 선택합니다.

   1. (선택 사항) 클라이언트 IP 주소를 보존하려면 **추가 설정**을 확장하고 **클라이언트 IP 보존** 확인란을 선택합니다. 그렇지 않으면 기본적으로 엔드포인트 네트워크 인터페이스를 클라이언트 IP 주소로 사용합니다.
**참고**  
이 옵션은 엔드포인트의 IP 주소 유형이 IPv4로 구성된 경우에만 사용할 수 있습니다.

   1. (선택 사항) **보안 그룹**의 경우 엔드포인트와 연결할 보안 그룹을 선택합니다. 그렇지 않으면 기본적으로 VPC에 대한 기본 보안 그룹이 사용됩니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 보안 그룹](eice-security-groups.md) 섹션을 참조하세요.

   1. **서브넷**에서 엔드포인트를 생성할 서브넷을 선택합니다.

   1. **IP 주소 유형**에서 엔드포인트의 IP 주소 유형을 선택하세요. 인스턴스에 대한 IPv4 및 IPv6 연결을 모두 지원해야 하는 경우 **듀얼 스택**을 선택하세요. 클라이언트 IP 보존을 지원해야 하는 경우 **IPv4**를 선택하세요.

   1. (선택 사항) 태그를 추가하려면 **새 태그 추가**를 선택하고 태그 키와 태그 값을 입력합니다.

1. 설정을 검토하고 **엔드포인트 생성**을 선택합니다.

   엔드포인트의 초기 상태는 **보류 중**입니다. 이 엔드포인트를 사용하여 인스턴스에 연결하기 전에 엔드포인트 상태가 **사용 가능**이 될 때까지 기다려야 합니다. 몇 분 정도 소요될 수 있습니다.

1. 엔드포인트를 사용하여 인스턴스에 연결하려면 [인스턴스에 연결](connect-using-eice.md) 섹션을 참조하세요.

------
#### [ AWS CLI ]

**EC2 Instance Connect 엔드포인트 생성**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html) 명령을 사용합니다.

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example
```

엔드포인트가 지원하는 트래픽 유형을 지정하려면 `--ip-address-type` 파라미터를 포함하세요. 유효한 값은 `ipv4`, `dualstack`또는 `ipv6`입니다. 서브넷은 사용자가 지정한 IP 주소 유형을 지원해야 합니다. `--ip-address-type` 파라미터를 생략하면 서브넷에서 지원하는 IP 주소 유형에 따라 기본값이 결정됩니다.

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example \
    --ip-address-type ipv4
```

다음은 예제 출력입니다.

```
{
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "create-complete",
        "StateMessage": "",
        "DnsName": "eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "FipsDnsName": "eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "NetworkInterfaceIds": [
            "eni-0123abcd"
        ],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneId": "use1-az4",
        "CreatedAt": "2023-04-07T15:43:53.000Z",
        "SubnetId": "subnet-0123abcd",
        "PreserveClientIp": false,
        "SecurityGroupIds": [
            "sg-0123abcd"
        ],
        "Tags": [],
        "IpAddressType": "ipv4"
}
```

**생성 상태를 모니터링하는 방법**  
`State` 필드의 초기 값은 `create-in-progress`입니다. 이 엔드포인트를 사용하여 인스턴스에 연결하기 전에 상태가 `create-complete`이(가) 될 때까지 기다리세요. [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) 명령을 사용하여 EC2 Instance Connect 엔드포인트의 상태를 모니터링합니다. `--query` 파라미터는 결과를 `State` 필드로 필터링합니다.

```
aws ec2 describe-instance-connect-endpoints --instance-connect-endpoint-ids eice-0123456789example --query InstanceConnectEndpoints[*].State --output text
```

다음은 예제 출력입니다.

```
create-complete
```

------
#### [ PowerShell ]

**EC2 Instance Connect 엔드포인트를 생성하려면 다음을 수행하세요.**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html) cmdlet을 사용하세요.

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example
```

엔드포인트가 지원하는 트래픽 유형을 지정하려면 `-IpAddressType` 파라미터를 포함하세요. 유효한 값은 `ipv4`, `dualstack`또는 `ipv6`입니다. 서브넷은 사용자가 지정한 IP 주소 유형을 지원해야 합니다. `-IpAddressType` 파라미터를 생략하면 서브넷에서 지원하는 IP 주소 유형에 따라 기본값이 결정됩니다.

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example -IpAddressType ipv4
```

다음은 예제 출력입니다.

```
OwnerId                     : 111111111111
InstanceConnectEndpointId   : eice-0123456789example
InstanceConnectEndpointArn  : arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example
State                       : create-complete
StateMessage                : 
DnsName                     : eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
FipsDnsName                 : eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
NetworkInterfaceIds         : {eni-0123abcd}
VpcId                       : vpc-0123abcd
AvailabilityZone            : us-east-1a
AvailabilityZoneId          : use1-az4
CreatedAt                   : 4/7/2023 3:43:53 PM
SubnetId                    : subnet-0123abcd
PreserveClientIp            : False
SecurityGroupIds            : {sg-0123abcd}
Tags                        : {}
IpAddressType               : ipv4
```

**생성 상태를 모니터링하는 방법**  
`State` 필드의 초기 값은 `create-in-progress`입니다. 이 엔드포인트를 사용하여 인스턴스에 연결하기 전에 상태가 `create-complete`이(가) 될 때까지 기다리세요. [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) cmdlet을 사용하여 EC2 인스턴스 연결 엔드포인트의 상태를 모니터링합니다. `.State.Value`는 결과를 `State` 필드로 필터링합니다.

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

다음은 예제 출력입니다.

```
create-complete
```

------

# EC2 Instance Connect 엔드포인트 수정
<a name="modify-ec2-instance-connect-endpoint"></a>

AWS CLI 또는 SDK를 사용하여 기존 EC2 Instance Connect 엔드포인트를 수정할 수 있습니다. Amazon EC2 콘솔은 엔드포인트 수정을 지원하지 않습니다.

시작하려면 먼저 필요한 IAM 권한이 있어야 합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 생성, 설명, 수정, 삭제할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint) 섹션을 참조하세요.

## 수정할 수 있는 파라미터
<a name="eice-modify-parameters"></a>

다음 EC2 Instance Connect 엔드포인트 파라미터를 수정할 수 있습니다.

**보안 그룹**  
EC2 Instance Connect 엔드포인트에 대한 새 보안 그룹을 지정할 수 있습니다. 새 보안 그룹은 현재 보안 그룹을 대체합니다.  
보안 그룹을 수정할 때 다음을 지정해야 합니다.  
+ VPC의 기본 보안 그룹일지라도 하나 이상의 보안 그룹입니다.
+ 이름이 아닌 보안 그룹의 ID입니다.

**IP 주소 유형**  
EC2 Instance Connect 엔드포인트에 새 IP 주소 유형을 지정할 수 있습니다.  
유효한 값: `ipv4` \$1 `dualstack` \$1 `ipv6`

**클라이언트 IP 설정 보존**  
클라이언트 IP 주소를 소스로 보존할지 여부를 지정할 수 있습니다.  
클라이언트 IP 보존은 IPv4 EC2 Instance Connect 엔드포인트에서만 지원됩니다. `PreserveClientIp`를 활성화하는 경우 엔드포인트의 기존 IP 주소 유형은 `ipv4`여아 하고, 동일한 요청에서 IP 주소 유형을 수정하는 경우 새 값은 `ipv4`여야 합니다.

------
#### [ AWS CLI ]

**EC2 Instance Connect 엔드포인트 수정**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html) 명령을 사용하고 수정할 EC2 Instance Connect 엔드포인트 및 파라미터를 지정합니다. 다음 예제에서는 단일 요청으로 전체 파라미터를 수정합니다.

```
aws ec2 modify-instance-connect-endpoint \
    --instance-connect-endpoint-id eice-0123456789example \
    --security-group-ids sg-0123456789example \
    --ip-address-type dualstack \
    --no-preserve-client-ip
```

다음은 예제 출력입니다.

```
{
    "Return": true
}
```

**업데이트 상태 모니터링**  
수정하는 동안 EC2 Instance Connect 엔드포인트 상태가 `update-in-progress`로 변경됩니다. 업데이트 프로세스는 비동기적으로 실행되며 `update-complete` 또는 `update-failed` 상태와 함께 완료됩니다. 엔드포인트는 상태가 `update-complete`로 변경될 때까지 이전 구성을 사용합니다.

업데이트 상태를 모니터링하려면 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) 명령을 사용합니다. `--query` 파라미터는 결과를 `State` 필드로 필터링합니다.

```
aws ec2 describe-instance-connect-endpoints \
    --instance-connect-endpoint-ids eice-0123456789example \
    --query InstanceConnectEndpoints[*].State --output text
```

다음은 예제 출력입니다.

```
update-complete
```

------
#### [ PowerShell ]

**EC2 Instance Connect 엔드포인트 수정**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html) cmdlet을 사용하고 수정할 EC2 Instance Connect 엔드포인트 및 파라미터를 지정합니다. 다음 예제에서는 단일 요청으로 전체 파라미터를 수정합니다.

```
Edit-EC2InstanceConnectEndpoint `
    -InstanceConnectEndpointId eice-0123456789example `
    -SecurityGroupIds sg-0123456789example `
    -IpAddressType dualstack `
    -PreserveClientIp $false
```

다음은 예제 출력입니다.

```
True
```

**업데이트 상태 모니터링**  
수정하는 동안 EC2 Instance Connect 엔드포인트 상태가 `update-in-progress`로 변경됩니다. 업데이트 프로세스는 비동기적으로 실행되며 `update-complete` 또는 `update-failed` 상태와 함께 완료됩니다. 엔드포인트는 상태가 `update-complete`로 변경될 때까지 이전 구성을 사용합니다.

[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) 명령을 사용하여 업데이트 상태를 모니터링합니다. `.State.Value`는 결과를 `State` 필드로 필터링합니다.

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

다음은 예제 출력입니다.

```
update-complete
```

------

# EC2 Instance Connect 엔드포인트 삭제
<a name="delete-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect 엔드포인트 관련 작업을 마치면 해당 엔드포인트를 삭제할 수 있습니다.

EC2 Instance Connect 엔드포인트를 생성하려면 필요한 IAM 권한이 있어야 합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 생성, 설명, 수정, 삭제할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint) 섹션을 참조하세요.

콘솔을 사용하여 EC2 Instance Connect 엔드포인트를 삭제하면 **삭제 중** 상태가 됩니다. 삭제에 성공하면 삭제된 엔드포인트는 더 이상 표시되지 않습니다. 삭제에 실패하면 상태는 **delete-failed**이고 **상태 메시지**에서는 실패 이유를 제공합니다.

AWS CLI를 사용하여 EC2 Instance Connect 엔드포인트를 삭제하면 `delete-in-progress` 상태가 됩니다. 삭제에 성공하면 `delete-complete` 상태가 됩니다. 삭제에 실패하면 `delete-failed` 상태가 되고 `StateMessage`에서 실패 이유를 제공합니다.

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

**EC2 Instance Connect 엔드포인트 삭제**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **엔드포인트**를 선택합니다.

1. 엔드포인트를 선택합니다.

1. **작업(Actions)**, **VPC 엔드포인트 삭제(Delete VPC endpoints)**를 차례로 선택합니다.

1. 확인 메시지가 표시되면 **delete**를 입력합니다.

1. **삭제**를 선택합니다.

------
#### [ AWS CLI ]

**EC2 Instance Connect 엔드포인트 삭제**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) 명령을 사용하고 삭제할 EC2 Instance Connect 엔드포인트의 ID를 지정합니다.

```
aws ec2 delete-instance-connect-endpoint --instance-connect-endpoint-id eice-03f5e49b83924bbc7
```

다음은 예제 출력입니다.

```
{
    "InstanceConnectEndpoint": {
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "delete-in-progress",
        "StateMessage": "",
        "NetworkInterfaceIds": [],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1d",
        "AvailabilityZoneId": "use1-az2",
        "CreatedAt": "2023-02-07T12:05:37+00:00",
        "SubnetId": "subnet-0123abcd"
    }
}
```

------
#### [ PowerShell ]

**EC2 Instance Connect 엔드포인트 삭제**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) cmdlet을 사용하고 삭제할 EC2 Instance Connect 엔드포인트의 ID를 지정합니다.

```
Remove-EC2InstanceConnectEndpoint -InstanceConnectEndpointId eice-03f5e49b83924bbc7
```

다음은 예제 출력입니다.

```
@{
    InstanceConnectEndpoint = @{
        OwnerId = "111111111111"
        InstanceConnectEndpointId = "eice-0123456789example"
        InstanceConnectEndpointArn = "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example"
        State = "delete-in-progress"
        StateMessage = ""
        NetworkInterfaceIds = @()
        VpcId = "vpc-0123abcd"
        AvailabilityZone = "us-east-1d"
        AvailabilityZoneId = "use1-az2"
        CreatedAt = "2023-02-07T12:05:37+00:00"
        SubnetId = "subnet-0123abcd"
    }
}
```

------

# EC2 인스턴스 연결 엔드포인트를 사용하여 Amazon EC2 인스턴스에 연결
<a name="connect-using-eice"></a>

EC2 인스턴스 연결 엔드포인트를 사용하여 SSH 또는 RDP를 지원하는 Amazon EC2 인스턴스에 연결할 수 있습니다.

**사전 조건**
+ EC2 Instance Connect 엔드포인트에 연결하려면 필요한 IAM 권한이 있어야 합니다. 자세한 내용은 [인스턴스에 연결하기 위해 EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel) 섹션을 참조하세요.
+ EC2 Instance Connect 엔드포인트는 다음 상태 중 하나여야 합니다.
  + **create-complete**: 새 엔드포인트의 경우
  + **update-in-progress**, **update-complete** 또는 **update-failed**: 수정 중인 기존 엔드포인트의 경우. 엔드포인트를 수정하는 경우 상태가 **update-complete**로 변경될 때까지 원래 구성을 계속 사용합니다.

    VPC에 EC2 Instance Connect 엔드포인트가 없는 경우 새로 생성할 수 있습니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 생성](create-ec2-instance-connect-endpoints.md) 섹션을 참조하세요.
+ EC2 Instance Connect 엔드포인트 IP 주소 유형은 인스턴스의 IP 주소 유형과 호환되어야 합니다. 엔드포인트 IP 주소 유형이 듀얼 스택인 경우 IPv4 및 IPv6 주소 모두에서 작동할 수 있습니다.
+ (Linux 인스턴스) Amazon EC2 콘솔을 사용하여 인스턴스에 연결하거나, CLI를 사용하여 연결하고 EC2 Instance Connect에서 임시 키를 처리하도록 하려면 인스턴스에 EC2 Instance Connect가 설치되어 있어야 합니다. 자세한 내용은 [EC2 Instance Connect 설치](ec2-instance-connect-set-up.md) 섹션을 참조하세요.
+ 인스턴스의 보안 그룹이 EC2 Instance Connect 엔드포인트에서의 인바운드 SSH 트래픽을 허용하는지 확인합니다. 자세한 내용은 [대상 인스턴스 보안 그룹 규칙](eice-security-groups.md#resource-security-group-rules) 섹션을 참조하세요.

**Topics**
+ [Amazon EC2 콘솔을 사용하여 Linux 인스턴스에 연결](#connect-using-the-ec2-console)
+ [SSH를 사용하여 Linux 인스턴스에 연결](#eic-connect-using-ssh)
+ [AWS CLI를 사용하여 해당 인스턴스 ID로 Linux 인스턴스에 연결](#eic-connect-using-cli)
+ [RDP를 사용하여 Windows 인스턴스에 연결](#eic-connect-using-rdp)
+ [문제 해결](#troubleshoot-eice)

## Amazon EC2 콘솔을 사용하여 Linux 인스턴스에 연결
<a name="connect-using-the-ec2-console"></a>

다음과 같이 Amazon EC2 콘솔(브라우저 기반 클라이언트)을 사용하여 인스턴스에 연결할 수 있습니다.

**Amazon EC2 콘솔을 사용하여 인스턴스에 연결**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택한 다음 **연결**을 선택합니다.

1. **EC2 Instance Connect** 탭을 선택합니다.

1. **연결 유형**에서 **프라이빗 IP를 사용하여 연결**을 선택하세요.

1. **프라이빗 IPv4 주소** 또는 **IPv6 주소**를 선택하세요. 인스턴스에 할당된 IP 주소를 기반으로 옵션을 사용할 수 있습니다. 옵션이 회색으로 표시되는 경우 인스턴스에 해당 유형의 IP 주소가 할당되지 않은 것입니다.

1. **EC2 Instance Connect 엔드포인트**의 경우 EC2 Instance Connect 엔드포인트 ID를 선택합니다.
**참고**  
EC2 Instance Connect 엔드포인트는 이전 단계에서 선택한 IP 주소와 호환되어야 합니다. 엔드포인트 IP 주소 유형이 듀얼 스택인 경우 IPv4 및 IPv6 주소 모두에서 작동할 수 있습니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트 생성](create-ec2-instance-connect-endpoints.md) 섹션을 참조하세요.

1. 인스턴스를 시작하는 데 사용한 AMI가 `ec2-user` 이외의 사용자 이름을 사용하는 경우 **사용자 이름**에 올바른 사용자 이름을 입력합니다.

1. **최대 터널 지속 시간(초)**에 SSH 연결의 허용되는 최대 지속 시간을 입력합니다.

   지속 시간은 IAM 정책에 지정된 `maxTunnelDuration` 조건을 준수해야 합니다. IAM 정책에 대한 액세스 권한이 없는 경우 관리자에게 문의하세요.

1. **연결**을 선택합니다. 그러면 인스턴스의 터미널 창이 열립니다.

## SSH를 사용하여 Linux 인스턴스에 연결
<a name="eic-connect-using-ssh"></a>

SSH를 사용하여 Linux 인스턴스에 연결하고, `open-tunnel` 명령을 사용하여 프라이빗 터널을 설정할 수 있습니다. 단일 연결 또는 다중 연결 모드에서 `open-tunnel`을 사용할 수 있습니다. 인스턴스 ID, 프라이빗 IPv4 주소 또는 IPv6 주소를 지정할 수 있습니다.

SSH로 인스턴트에 연결하기 위한 AWS CLI 사용에 대한 자세한 내용은 [AWS CLI를 사용하여 연결](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh)의 내용을 참조하세요.

다음 예제에서는 [OpenSSH](https://www.openssh.com/)를 사용합니다. 프록시 모드를 지원하는 다른 SSH 클라이언트를 사용할 수 있습니다.

### 단일 연결
<a name="ssh-single-connection"></a>

**SSH 및 `open-tunnel` 명령을 사용하여 인스턴스에 단일 연결만 허용**

`ssh` 및 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI 명령을 다음과 같이 실행합니다. `-o` 프록시 명령은 인스턴스에 대한 프라이빗 터널을 생성하는 `open-tunnel` 명령을 포함합니다.

```
ssh -i my-key-pair.pem ec2-user@i-1234567890abcdef0 \
    -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-1234567890abcdef0'
```

여기에서:
+ `-i` - 인스턴스를 시작하는 데 사용되었던 키 페어를 지정합니다.
+ `ec2-user@i-1234567890abcdef0` - 인스턴스를 시작하는 데 사용되었던 AMI의 사용자 이름과 인스턴스 ID를 지정합니다. IPv6 주소가 있는 인스턴스의 경우 인스턴스 ID 대신 IPv6 주소를 지정해야 합니다.
+ `--instance-id` - 연결할 인스턴스의 ID를 지정합니다. 또는 `%h`를 지정하여 사용자로부터 인스턴스 ID를 추출할 수도 있습니다. IPv6 주소가 있는 인스턴스의 경우 `--instance-id i-1234567890abcdef0`를 `--private-ip-address 2001:db8::1234:5678:1.2.3.4`로 바꿉니다.

### 다중 연결
<a name="ssh-multi-connection"></a>

인스턴스에 다중 연결을 허용하려면 먼저 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI 명령을 실행하여 새 TCP 연결 수신을 시작하고, `ssh`를 사용하여 새 TCP 연결과 인스턴스에 대한 프라이빗 터널을 생성합니다.

**SSH 및 `open-tunnel` 명령을 사용하여 인스턴스에 다중 연결 허용**

1. 다음 명령을 실행하여 로컬 시스템의 지정된 포트에서 새 TCP 연결 수신을 시작합니다.

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --local-port 8888
   ```

   예상 결과:

   ```
   Listening for connections on port 8888.
   ```

1. **새 터미널 창에서 다음 `ssh` 명령을 실행하여 인스턴스에 대한 새 TCP 연결 및 프라이빗 터널을 생성합니다.

   ```
   ssh -i my-key-pair.pem ec2-user@localhost -p 8888
   ```

   예상 출력 - **첫 번째 터미널 창에 다음이 표시됩니다.

   ```
   [1] Accepted new tcp connection, opening websocket tunnel.
   ```

   다음이 표시될 수도 있습니다.

   ```
   [1] Closing tcp connection.
   ```

## AWS CLI를 사용하여 해당 인스턴스 ID로 Linux 인스턴스에 연결
<a name="eic-connect-using-cli"></a>

인스턴스 ID만 아는 경우 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) AWS CLI 명령을 사용하여 SSH 클라이언트를 사용하는 인스턴트에 연결할 수 있습니다. 자세한 내용은 [AWS CLI를 사용하여 연결](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh) 섹션을 참조하세요.

**사전 조건**
+ AWS CLI 버전 2를 설치하고 자격 증명을 사용하여 구성합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서**의 [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 및 [Configure the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)를 참조하세요.
+ 또는 사전 인증된 쉘에서 AWS CloudShell을 열고 AWS CLI 명령을 실행합니다.

**인스턴스 ID 및 EC2 Instance Connect 엔드포인트를 사용하여 인스턴스에 연결**  
인스턴스 ID만 아는 경우 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) CLI 명령을 사용하고 `ssh` 명령, 인스턴스 ID, 값이 `eice`인 `--connection-type` 파라미터를 지정하여 EC2 Instance Connect 엔드포인트를 사용합니다. 인스턴스에 IPv6 주소만 있는 경우 IPv6 주소와 함께 `--instance-ip` 파라미터도 포함해야 합니다.
+ 인스턴스에 프라이빗 IPv4 주소가 있는 경우(IPv6 주소도 있을 수 있음) 다음 명령과 파라미터를 사용합니다.

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --os-user ec2-user \
      --connection-type eice
  ```
+ 인스턴스에 IPv6 주소만 있는 경우 IPv6 주소와 함께 `--instance-ip` 파라미터를 포함합니다.

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --instance-ip 2001:db8::1234:5678:1.2.3.4 \
      --os-user ec2-user \
      --connection-type eice
  ```

**작은 정보**  
오류가 발생하면 AWS CLI 버전 2를 사용하고 있는지 확인합니다. `ssh` 파라미터는 AWS CLI 버전 2에서만 사용할 수 있습니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 버전 2 정보](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html#welcome-versions-v2)를 참조하세요.

## RDP를 사용하여 Windows 인스턴스에 연결
<a name="eic-connect-using-rdp"></a>

EC2 Instance Connect 엔드포인트를 통한 원격 데스크톱 프로토콜(RDP)을 사용하여 퍼블릭 IPv4 주소 또는 퍼블릭 DNS 이름 없이 Windows 인스턴스에 연결할 수 있습니다.

**RDP 클라이언트로 Windows 인스턴스 연결**

1. [RDP를 사용하여 Windows 인스턴스에 연결](connect-rdp.md)의 1\$18단계를 완료합니다. 8단계에서 RDP 데스크톱 파일을 다운로드한 이후 **연결할 수 없음** 메시지가 표시되는데, 이는 인스턴스에 퍼블릭 IP 주소가 없기 때문일 수 있습니다.

1. 다음 명령을 실행하여 인스턴스가 위치한 VPC에 대한 프라이빗 터널을 설정합니다. RDP가 기본적으로 포트 3389를 사용하기 때문에 `--remote-port`는 `3389`여야 합니다.

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --remote-port 3389 \
       --local-port any-port
   ```

1. **다운로드** 폴더에서 다운로드한 RDP 데스크톱 파일을 찾아 RDP 클라이언트 창으로 끌어다 놓습니다.

1. RDP 데스크톱 파일을 마우스 오른쪽 버튼으로 클릭하고 **편집**을 선택합니다.

1. **PC 편집** 창의 **PC 이름**(연결할 인스턴스)에 `localhost:local-port`를 입력합니다. 여기에서 `local-port`는 2단계에서 지정한 것과 동일한 값을 사용합니다. 입력 후 **저장**을 선택합니다.

   **PC 편집** 창의 다음 스크린샷은 Mac의 Microsoft Remote Desktop 스크린샷입니다. Windows 클라이언트를 사용하는 경우 창이 다를 수 있습니다.  
![\[PC 이름 필드에 “localhost:5555”가 포함된 RDP 클라이언트.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint-rdp.png)

1. RDP 클라이언트에서 방금 구성한 PC를 마우스 오른쪽 버튼으로 클릭하고 **연결**을 선택하여 인스턴스에 연결합니다.

1. 프롬프트에서 관리자 계정의 해독된 암호를 입력합니다.

## 문제 해결
<a name="troubleshoot-eice"></a>

다음 정보를 사용하면 EC2 Instance Connect 엔드포인트로 인스턴스를 연결할 때 발생할 수 있는 문제를 진단하고 수정하는 데 도움이 됩니다.

### 인스턴스에 연결할 수 없음
<a name="troubleshoot-eice-1"></a>

다음은 인스턴스에 연결할 수 없는 일반적인 이유입니다.
+ 보안 그룹 - EC2 Instance Connect 엔드포인트와 인스턴스에 할당된 보안 그룹을 확인합니다. 필수 보안 그룹 규칙에 대한 자세한 내용은 [EC2 Instance Connect 엔드포인트 보안 그룹](eice-security-groups.md) 섹션을 참조하세요.
+ 인스턴스 상태 - 인스턴스가 `running` 상태인지 확인합니다.
+ 키 페어 - 연결하는 데 사용하는 명령에 프라이빗 키가 필요한 경우 인스턴스에 퍼블릭 키가 있고 해당 프라이빗 키가 있는지 확인합니다.
+ IAM 권한 - 필요한 IAM 권한이 있는지 확인합니다. 자세한 내용은 [EC2 Instance Connect 엔드포인트를 사용할 수 있는 권한 부여](permissions-for-ec2-instance-connect-endpoint.md) 섹션을 참조하세요.

Linux 인스턴스의 문제 해결 팁에 대한 자세한 내용은 [Amazon EC2 Linux 인스턴스 연결 문제 해결](TroubleshootingInstancesConnecting.md) 섹션을 참조하세요. Windows 인스턴스의 문제 해결 팁에 대한 자세한 내용은 [Amazon EC2 Windows 인스턴스 연결 문제 해결](troubleshoot-connect-windows-instance.md) 섹션을 참조하세요.

### ErrorCode: AccessDeniedException
<a name="troubleshoot-eice-2"></a>

`AccessDeniedException` 오류가 발생하고, `maxTunnelDuration` 조건이 IAM 정책에 지정된 경우 인스턴스에 연결할 때 `--max-tunnel-duration` 파라미터를 지정해야 합니다. 이 파라미터에 대한 자세한 내용은 AWS CLI 명령 참조**의 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html)을 참조하세요.

# EC2 Instance Connect 엔드포인트를 통해 설정된 연결 기록
<a name="log-ec2-instance-connect-endpoint-using-cloudtrail"></a>

EC2 Instance Connect 엔드포인트를 통해 설정된 리소스 작업 및 감사 연결을 AWS CloudTrail 로그로 기록할 수 있습니다.

Amazon EC2에서 AWS CloudTrail을 사용하는 방법에 대한 자세한 내용은 [AWS CloudTrail을 사용하여 Amazon EC2 API 호출 로깅](monitor-with-cloudtrail.md) 섹션을 참조하세요.

## AWS CloudTrail로 EC2 Instance Connect 엔드포인트 API 호출 기록
<a name="ec2-instance-connect-endpoint-api-calls-cloudtrail"></a>

EC2 Instance Connect 엔드포인트 리소스 작업은 CloudTrail에 관리 이벤트로 기록됩니다. 다음 API 호출이 이루어지면 활동이 **이벤트 기록**에 CloudTrail 이벤트로 기록됩니다.
+ `CreateInstanceConnectEndpoint`
+ `DescribeInstanceConnectEndpoints`
+ `DeleteInstanceConnectEndpoint`

AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 AWS CloudTrail 사용 설명서**에서 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

## AWS CloudTrail을 사용하여 EC2 Instance Connect 엔드포인트를 사용하여 인스턴스에 연결하는 사용자 감사
<a name="ec2-instance-connect-endpoint-audit-users-cloudtrail"></a>

EC2 Instance Connect 엔드포인트를 통한 인스턴스 연결 시도는 **이벤트 기록**의 CloudTrail에 기록됩니다. EC2 Instance Connect 엔드포인트를 통해 인스턴스 연결이 시작되면 연결은 `OpenTunnel`의 `eventName`을 사용하여 CloudTrail 관리 이벤트로 기록됩니다.

CloudTrail 이벤트를 대상으로 라우팅하는 Amazon EventBridge 규칙을 생성할 수 있습니다. 자세한 내용은 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)를 참조하세요.

다음은 CloudTrail에 기록된 `OpenTunnel` 관리 이벤트 예제입니다.

```
{
     "eventVersion": "1.08",
     "userIdentity": {
         "type": "IAMUser",
         "principalId": "ABCDEFGONGNOMOOCB6XYTQEXAMPLE",
         "arn": "arn:aws:iam::1234567890120:user/IAM-friendly-name",
         "accountId": "123456789012",
         "accessKeyId": "ABCDEFGUKZHNAW4OSN2AEXAMPLE",
         "userName": "IAM-friendly-name"
     },
     "eventTime": "2023-04-11T23:50:40Z",
     "eventSource": "ec2-instance-connect.amazonaws.com",
     "eventName": "OpenTunnel",
     "awsRegion": "us-east-1",
     "sourceIPAddress": "1.2.3.4",
     "userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
     "requestParameters": {
         "instanceConnectEndpointId": "eici-0123456789EXAMPLE",
         "maxTunnelDuration": "3600",
         "remotePort": "22",
         "privateIpAddress": "10.0.1.1"
     },
     "responseElements": null,
     "requestID": "98deb2c6-3b3a-437c-a680-03c4207b6650",
     "eventID": "bbba272c-8777-43ad-91f6-c4ab1c7f96fd",
     "readOnly": false,
     "resources": [{
         "accountId": "123456789012",
         "type": "AWS::EC2::InstanceConnectEndpoint",
         "ARN": "arn:aws:ec2:us-east-1:123456789012:instance-connect-endpoint/eici-0123456789EXAMPLE"
     }],
     "eventType": "AwsApiCall",
     "managementEvent": true,
     "recipientAccountId": "123456789012",
     "eventCategory": "Management"
}
```

# EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할
<a name="eice-slr"></a>

Amazon EC2는 AWS Identity and Access Management(IAM) [서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)을 사용합니다. 서비스 연결 역할은 Amazon EC2에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Amazon EC2에서 사전 정의하며, Amazon EC2에서 기타 AWS 서비스를 자동으로 호출하기 위해 필요한 모든 권한을 포함합니다. 자세한 내용은 IAM 사용 설명서**의 [서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)을 참조하세요.

## EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할 권한
<a name="slr-permissions"></a>

Amazon EC2는 **AWSServiceRoleforec2InstanceConnect**를 사용하여 EC2 Instance Connect 엔드포인트에 필요한 네트워크 인터페이스를 계정에서 생성하고 관리합니다.

**AWSServiceRoleForEC2InstanceConnect** 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `ec2-instance-connect.amazonaws.com`

이 서비스 연결 역할은 **AWSServiceRoleForEC2InstanceConnect**라는 관리형 정책을 사용합니다.
+ **Ec2InstanceConnectEndpoint**

관리형 정책의 권한을 보려면 AWS 관리형 정책 참조**의 [Ec2InstanceConnectEndpoint](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html)를 참조하세요.

## EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할 생성
<a name="create-slr"></a>

이 서비스 연결 역할은 수동으로 생성할 필요가 없습니다. EC2 Instance Connect 엔드포인트를 생성할 때 Amazon EC2에서 서비스 연결 역할을 자동으로 생성합니다.

## EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할 편집
<a name="edit-slr"></a>

EC2 Instance Connect 엔드포인트에서는 **AWSServiceRoleForEC2Instance** 서비스 연결 역할 편집을 허용하지 않습니다.

## EC2 Instance Connect 엔드포인트에 대한 서비스 연결 역할 삭제
<a name="delete-slr"></a>

EC2 Instance Connect 엔드포인트를 더 이상 사용할 필요가 없는 경우 **AWSServiceRoleForEC2InstanceConnect** 서비스 연결 역할을 삭제하는 것이 좋습니다.

서비스 연결 역할을 삭제하기 전에 모든 EC2 Instance Connect 엔드포인트 리소스를 삭제해야 합니다.

서비스 연결 역할을 삭제하려면 *IAM 사용 설명서*의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete-slr)를 참조하세요.

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 링크 역할을 생성하고 편집하거나 삭제할 수 있도록 권한을 구성해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#service-linked-role-permissions)을 참조하세요.

# EC2 Instance Connect 엔드포인트의 할당량
<a name="eice-quotas"></a>

AWS 계정에는 각 AWS 서비스에 대한 기본 할당량(이전에는 제한이라고 함)이 있습니다. 다르게 표시되지 않는 한, 리전별로 각 할당량이 적용됩니다.

AWS 계정에는 EC2 Instance Connect 엔드포인트와 관련된 다음과 같은 할당량이 있습니다.


| 이름 | 기본값 | 조정 가능 | 
| --- | --- | --- | 
| AWS 리전별 AWS 계정당 최대 EC2 Instance Connect 엔드포인트 수 | 5 | 아니요 | 
| VPC당 최대 EC2 Instance Connect 엔드포인트 수 | 1 | 아니요 | 
| 서브넷당 최대 EC2 Instance Connect 엔드포인트 수 | 1 | 아니요 | 
| EC2 인스턴스 연결 엔드포인트당 최대 동시 연결 수 | 20 | 아니요 | 