

# 퍼블릭 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
   ```

------