

# 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)을 참조하세요.