

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

# AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 Linux 인스턴스 조인
<a name="joining_linux_instance"></a>

에서 EC2 Linux 인스턴스를 시작하고 AWS 관리형 Microsoft AD에 조인할 수 있습니다 AWS Management Console. EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD에 수동으로 조인할 수도 있습니다. Winbind와 같은 도구를 사용하여 EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD에 도메인 조인할 수도 있습니다.

다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2(64비트 x86)
+ Red Hat Enterprise Linux 8(HVM)(64비트 x86)
+ Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux Enterprise Server 15 SP1

**참고**  
Ubuntu 14 및 Red Hat Enterprise Linux 7 및 8 이전의 배포판은 원활한 도메인 조인 기능을 지원하지 않습니다.

**Topics**
+ [AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 Linux 인스턴스를 원활하게 조인](seamlessly_join_linux_instance.md)
+ [Amazon EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD에 원활하게 조인](seamlessly_join_linux_to_shared_MAD.md)
+ [Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 수동으로 조인](join_linux_instance.md)
+ [Winbind를 사용하여 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 수동으로 조인](join_linux_instance_winbind.md)

# AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 Linux 인스턴스를 원활하게 조인
<a name="seamlessly_join_linux_instance"></a>

이 절차는 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 원활하게 조인합니다. 이 절차를 완료하려면 추가 비용이 발생할 수 있는 AWS Secrets Manager 보안 암호를 생성해야 합니다. 자세한 내용은 [AWS Secrets Manager 요금](https://aws.amazon.com/secrets-manager/pricing/)을 참조하세요.

여러 AWS 계정에서 원활한 도메인 조인을 수행해야 하는 경우 선택적으로 [디렉터리 공유](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_directory_sharing.html)를 활성화하도록 선택할 수 있습니다.

다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2(64비트 x86)
+ Red Hat Enterprise Linux 8(HVM)(64비트 x86)
+ Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux Enterprise Server 15 SP1

**참고**  
Ubuntu 14 및 Red Hat Enterprise Linux 7 및 8 이전의 배포판은 원활한 도메인 조인 기능을 지원하지 않습니다.

Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 원활하게 조인하는 프로세스에 대한 데모를 보려면 다음 YouTube 동영상을 참조하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo)


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

EC2 Linux 인스턴스에 원활한 도메인 조인을 설정하려면 먼저 이 섹션의 절차를 완료해야 합니다.

### 원활한 도메인 조인을 위한 네트워킹 사전 조건
<a name="linux-domain-join-networking-prereqs"></a>

EC2 Linux 인스턴스를 원활하게 도메인 조인하려면 다음을 완료해야 합니다.
+ EC2 Linux 인스턴스에 원활하게 조인하려면 다음 IAM 권한이 필요합니다.
  +  AWS 관리형 Microsoft AD가 있어야 합니다. 자세한 내용은 [AWS 관리형 Microsoft AD 생성](ms_ad_getting_started.md#ms_ad_getting_started_create_directory)를 참조하세요.
  + EC2 Windows 인스턴스를 원활하게 조인하려면 다음 IAM 권한이 필요합니다.
    + 다음 IAM 권한을 보유한 IAM 인스턴스 프로파일:
      + `AmazonSSMManagedInstanceCore`
      + `AmazonSSMDirectoryServiceAccess`
    + EC2를 AWS 관리형 Microsoft AD에 조인하는 사용자에게는 다음과 같은 IAM 권한이 필요합니다.
      + Directory Service 권한:
        + `"ds:DescribeDirectories"`
        + `"ds:CreateComputer"`
      + Amazon VPC 권한:
        + `"ec2:DescribeVpcs"`
        + `"ec2:DescribeSubnets"`
        + `"ec2:DescribeNetworkInterfaces"`
        + `"ec2:CreateNetworkInterface"`
        + `"ec2:AttachNetworkInterface"`
      + EC2 권한:
        + `"ec2:DescribeInstances"`
        + `"ec2:DescribeImages"`
        + `"ec2:DescribeInstanceTypes"`
        + `"ec2:RunInstances"`
        + `"ec2:CreateTags"`
      + AWS Systems Manager 권한:
        + `"ssm:DescribeInstanceInformation"`
        + `"ssm:SendCommand"`
        + `"ssm:GetCommandInvocation"`
        + `"ssm:CreateBatchAssociation"`
+  AWS 관리형 Microsoft AD가 생성되면 인바운드 및 아웃바운드 규칙을 사용하여 보안 그룹이 생성됩니다. 이러한 규칙 및 포트에 대한 자세한 내용은 [AWS 관리형 Microsoft AD로 생성되는 항목](ms_ad_getting_started_what_gets_created.md)를 참조하세요. EC2 Linux 인스턴스를 원활하게 도메인 조인하려면 인스턴스를 시작하는 VPC가 AWS Managed Microsoft AD 보안 그룹의 인바운드 및 아웃바운드 규칙에 허용된 것과 동일한 포트를 허용해야 합니다.
  + 네트워크 보안 및 방화벽 설정에 따라 추가 아웃바운드 트래픽을 허용해야 할 수 있습니다. 이 트래픽은 다음 엔드포인트에 대한 HTTPS(포트 443)용입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/seamlessly_join_linux_instance.html)
+  AWS 관리형 Microsoft AD 도메인 이름을 확인하는 DNS 서버를 사용하는 것이 좋습니다. 이를 위해 DHCP 옵션 세트를 생성할 수 있습니다. 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 DHCP 옵션 세트 생성 또는 변경](dhcp_options_set.md)을 참조하세요.
  + DHCP 옵션 세트를 생성하지 않도록 선택하면 AWS 관리형 Microsoft AD에서 DNS 서버가 정적이고 로 구성됩니다.

### 원활한 도메인 가입 서비스 계정을 선택합니다
<a name="seamless-linux-prereqs-select"></a>

Linux 컴퓨터를 AWS 관리형 Microsoft AD Active Directory 도메인에 원활하게 조인할 수 있습니다. 이렇게 하려면 컴퓨터 계정 생성 권한이 있는 사용자 계정을 사용하여 컴퓨터를 도메인에 조인해야 합니다. *AWS 위임된 관리자* 또는 다른 그룹의 구성원은 컴퓨터를 도메인에 조인할 수 있는 충분한 권한을 가질 수 있지만, 이러한 권한은 사용하지 않는 것이 좋습니다. 가장 좋은 방법은 컴퓨터를 도메인에 조인하는 데 필요한 최소 권한이 있는 서비스 계정을 사용하는 것입니다.

컴퓨터를 도메인에 조인하는 데 필요한 최소 권한이 있는 계정을 위임하려면 다음 PowerShell 명령을 실행할 수 있습니다. 도메인에 조인된 Windows 컴퓨터에 [AWS 관리형 Microsoft AD용 Active Directory 관리 도구 설치](ms_ad_install_ad_tools.md)가 설치되어 있는 상태에서 이러한 명령을 실행해야 합니다. 또한 컴퓨터 OU 또는 컨테이너에 대한 권한을 수정할 권한이 있는 계정을 사용해야 합니다. PowerShell 명령은 서비스 계정이 도메인의 기본 컴퓨터 컨테이너에 컴퓨터 객체를 생성할 수 있도록 권한을 설정합니다.

```
$AccountName = 'awsSeamlessDomain'
# DO NOT modify anything below this comment.
# Getting Active Directory information.
Import-Module 'ActiveDirectory'
$Domain = Get-ADDomain -ErrorAction Stop
$BaseDn = $Domain.DistinguishedName
$ComputersContainer = $Domain.ComputersContainer
$SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext'
[System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID
# Getting Service account Information.
$AccountProperties = Get-ADUser -Identity $AccountName
$AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value
# Getting ACL settings for the Computers container.
$ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer"
# Setting ACL allowing the service account the ability to create child computer objects in the Computers container.
$AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All'
$ObjectAcl.AddAccessRule($AddAccessRule)
Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"
```

GUI(그래픽 사용자 인터페이스)를 선호하는 경우 [서비스 계정에 권한 위임](ad_connector_getting_started.md#connect_delegate_privileges)에서 설명하는 수동 프로세스를 사용할 수 있습니다.

### 도메인 서비스 계정을 저장할 보안 암호 생성
<a name="-create-secrets"></a>

 AWS Secrets Manager 를 사용하여 도메인 서비스 계정을 저장할 수 있습니다. 자세한 내용은 [AWS Secrets Manager 보안 암호 생성을 참조하세요](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html).

**참고**  
Secrets Manager와 관련된 요금이 있습니다. 자세한 정보는 *AWS Secrets Manager 사용 설명서*의 [요금](https://docs.aws.amazon.com//secretsmanager/latest/userguide/intro.html#asm_pricing)을 참조하세요.

**보안 암호를 만들고 도메인 서비스 계정 정보를 저장하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) AWS Secrets Manager 콘솔을 엽니다.

1. **새 보안 암호 저장(Store a new secret)**을 선택합니다.

1. **새 보안 암호 저장(Store a new secret)** 페이지에서 다음을 수행합니다.

   1. **암호 유형**에서 **다른 암호 유형**을 선택합니다.

   1. **키/값 페어**에서 다음을 수행합니다.

      1. 첫 번째 상자에 **awsSeamlessDomainUsername**를 입력합니다. 같은 행의 다음 상자에 서비스 계정의 사용자 이름을 입력합니다. 예를 들어 이전에 PowerShell 명령을 사용한 경우 서비스 계정 이름은 **awsSeamlessDomain**입니다.
**참고**  
있는 그대로 **awsSeamlessDomainUsername**을 입력해야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 조인에 실패합니다.  
![\[AWS Secrets Manager 콘솔의 보안 암호 유형 선택 페이지에서 다른 유형의 보안 암호는 보안 암호 유형에서 선택되고 awsSeamlessDomainUsername이 키 값으로 입력됩니다.\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/images/secrets_manager_1.png)

      1. **Add row(행 추가)**를 선택합니다.

      1. 새 행의 첫 번째 상자에 **awsSeamlessDomainPassword**를 입력합니다. 같은 행의 다음 상자에 서비스 계정의 암호를 입력합니다.
**참고**  
있는 그대로 **awsSeamlessDomainPassword**을 입력해야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 조인에 실패합니다.

      1. **암호화 키**에서 기본값 `aws/secretsmanager`를 그대로 둡니다. AWS Secrets Manager 는 이 옵션을 선택할 때 항상 보안 암호를 암호화합니다. 사용자가 생성한 키를 선택할 수도 있습니다.

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

1. **보안 암호 이름** 아래에 다음 형식을 사용하여 디렉터리 ID가 포함된 보안 암호 이름을 입력하고 *d-xxxxxxxx*를 디렉토리 ID로 대체하세요.

   ```
   aws/directory-services/d-xxxxxxxxx/seamless-domain-join
   ```

   이는 애플리케이션에서 보안 암호를 검색하는 데 사용됩니다.
**참고**  
있는 그대로 **aws/directory-services/*d-xxxxxxxxx*/seamless-domain-join**를 입력해야 하지만, *d-xxxxxxxxxxxxx*를 디렉터리 ID로 바꿔야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 가입에 실패합니다.  
![\[AWS Secrets Manager 콘솔의 보안 암호 구성 페이지에 있습니다. 보안 암호 이름이 입력되고 강조 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/images/secrets_manager_2.png)

1. 다른 모든 항목은 기본값으로 설정한 후 **Next(다음)**를 선택합니다.

1. **Configure automatic rotation(자동 교체 구성)**을 **Disable automatic rotation(자동 교체 사용 안 함)**으로 선택하고 **Next(다음)**를 선택합니다.

   이 보안 암호를 저장한 후 교체를 켤 수 있습니다.

1. 설정을 검토한 다음 **Store(저장)**를 선택하여 변경 내용을 저장합니다. 이제 Secrets Manager 콘솔에서 새 보안 암호가 목록에 포함된 계정의 보안 암호 목록으로 돌아갑니다.

1. 목록에서 새로 생성한 보안 암호 이름을 선택하고 **보안 암호 ARN** 값을 기록해 둡니다. 다음 단원에서 이 값을 사용하게 됩니다.

### 도메인 서비스 계정 보안 암호의 교체 켜기
<a name="seamless-linux-prereqs-turn-on-rotation"></a>

보안 태세를 개선하기 위해 보안 암호를 정기적으로 교체하는 것이 좋습니다.

**도메인 서비스 계정 보안 암호의 교체를 켜기**
+ *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager 보안 암호에 대한 자동 교체 설정](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_turn-on-for-other.html)의 지침을 따릅니다.

  5단계의 경우 *AWS Secrets Manager 사용 설명서*의 교체 템플릿 [Microsoft Active Directory 보안 인증](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_available-rotation-templates.html#template-AD-password) 정보를 사용합니다.

  도움이 필요하면 *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager 교체 문제 해결을](https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot_rotation.html) 참조하세요.

### 필요한 IAM policy 정책 및 역할 생성
<a name="seamless-linux-prereqs-create-policy"></a>

다음 사전 요구 사항 단계를 사용하여 Secrets Manager 원활한 도메인 조인 보안 암호(이전에 생성함)에 대한 읽기 전용 액세스를 허용하는 사용자 지정 정책을 생성하고 새 LinuxEC2DomainJoin IAM 역할을 생성합니다.

#### Secrets Manager IAM 읽기 정책 생성
<a name="seamless-linux-prereqs-create-policy-step1"></a>

IAM 콘솔을 사용하여 Secrets Manager 보안 암호에 대한 읽기 전용 액세스 권한을 부여하는 정책을 생성합니다.

**Secrets Manager IAM 읽기 정책을 생성하려면**

1. IAM 정책을 생성할 권한이 있는 사용자 AWS Management Console 로에 로그인합니다. 그런 다음 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창의 **액세스 관리**에서 **정책**을 선택합니다.

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

1. **JSON** 탭을 선택하고 다음 JSON 정책 문서에서 텍스트를 복사합니다. 그런 다음 **JSON** 텍스트 상자에 붙여 넣습니다.
**참고**  
지역 및 리소스 ARN을 앞서 생성한 보안 암호의 실제 지역 및 ARN으로 교체해야 합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:xxxxxxxxx:secret:aws/directory-services/d-xxxxxxxxx/seamless-domain-join"
               ]
           }
       ]
   }
   ```

1. 마쳤으면 [**Next**]를 선택합니다. 정책 검사기가 모든 구문 오류를 보고합니다. IAM 검증 정책에 대한 자세한 내용은 [Validating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)를 참조하세요.

1. **Review policy(정책 검토)** 페이지에서 **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read**와 같은 정책의 이름을 입력합니다. **Summary(요약)**을 검토하여 정책이 부여하는 권한을 확인합니다. 그런 다음 **Create policy(정책 생성)**를 선택하여 변경 내용을 저장합니다. 새로운 정책이 관리형 정책 목록에 나타나며 ID 연결 준비가 완료됩니다.

**참고**  
보안 암호당 정책을 하나씩 생성하는 것이 좋습니다. 이렇게 하면 인스턴스가 적절한 보안 암호에만 액세스할 수 있고 인스턴스가 손상될 경우 미치는 영향이 최소화됩니다.

#### LinuxEC2DomainJoin 역할 생성
<a name="seamless-linux-prereqs-create-policy-step2"></a>

IAM 콘솔을 사용하여 Linux EC2 인스턴스를 도메인에 조인하는 데 사용할 역할을 생성합니다.

**LinuxEC2DomainJoin 역할을 생성하려면**

1. IAM 정책을 생성할 권한이 있는 사용자 AWS Management Console 로에 로그인합니다. 그런 다음 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창의 **액세스 관리**에서 **역할**을 선택합니다.

1. 콘텐츠 창에서 **Create role(역할 생성)**을 선택합니다.

1. **신뢰할 수 있는 엔티티 유형 선택** 아래에서 **AWS 서비스**를 선택합니다.

1. **사용 사례**에서 **EC2**를 선택한 후 **다음**을 선택합니다.  
![\[IAM 콘솔의 신뢰할 수 있는 엔터티 선택 page. AWS service 및 EC2가 선택됩니다.\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/images/iam-console-trusted-entity.png)

1. **Filter policies(필터 정책)**의 경우 다음을 수행합니다.

   1. **AmazonSSMManagedInstanceCore**을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.

   1. **AmazonSSMDirectoryServiceAccess**을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.

   1. **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read**(또는 이전 절차에서 생성한 IAM 정책의 이름)을(를) 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.

   1. 위에 나열된 세 가지 정책을 추가한 후 **역할 생성**을 선택합니다.
**참고**  
AmazonSSMDirectoryServiceAccess는 Directory Service에서 관리하는 Active Directory에 인스턴스를 조인할 권한을 제공합니다. AmazonSSMManagedInstanceCore는 AWS Systems Manager 서비스를 사용하는 데 필요한 최소 권한을 제공합니다. 이러한 권한으로 역할을 생성하는 방법과 IAM 역할에 할당할 수 있는 기타 권한 및 정책에 관한 정보에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [Systems Manager용 IAM 인스턴스 프로파일 생성](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)을 참조하세요.

1. **역할 이름** 필드에 새 역할의 이름(예: **LinuxEC2DomainJoin** 또는 자신이 선호하는 다른 이름)을 입력합니다.

1. (선택 사항)**역할 설명**에 설명을 입력합니다.

1. (선택 사항) **3단계: 태그 추가**에서 **새 태그 추가**를 선택하여 태그를 추가합니다. 태그 키-값 페어는 이 역할에 대한 액세스를 구성, 추적 또는 제어하는 데 사용됩니다.

1. **역할 생성**을 선택합니다.

## Linux 인스턴스를 원활하게 조인
<a name="seamless-linux-join-instance"></a>

**Linux 인스턴스를 원활하게 조인**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) Amazon EC2 콘솔을 엽니다.

1. 탐색 모음의 리전 선택기에서 기존 디렉터리 AWS 리전 와 동일한를 선택합니다.

1. **EC2 대시보드**의 **시작 인스턴스** 섹션에서 **인스턴스 시작**을 선택합니다.

1. **인스턴스 시작** 페이지의 **이름 및 태그** 섹션에서 Linux EC2 인스턴스에 사용할 이름을 입력합니다.

1.  *(선택 사항)* **추가 태그 추가**에서 이 EC2 인스턴스에 대한 액세스를 구성, 추적, 제어할 태그-키 값 페어를 하나 이상 추가합니다.

1. **애플리케이션 및 OS 이미지(Amazon Machine Image)** 섹션에서 시작하려는 Linux AMI를 선택합니다.
**참고**  
사용되는 AMI에는 AWS Systems Manager (SSM 에이전트) 버전 2.3.1644.0 이상이 있어야 합니다. AMI에서 인스턴스를 시작하여 AMI에 설치된 SSM 에이전트 버전을 확인하려면 [현재 설치된 SSM 에이전트 버전 가져오기](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-get-version.html)를 참조하세요. SSM 에이전트를 업그레이드해야 하는 경우 [Linux용 EC2 인스턴스에 SSM 에이전트 설치 및 구성](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)을 참조하세요.  
SSM은 Linux 인스턴스를 Active Directory 도메인에 조인할 때 `aws:domainJoin` 플러그인을 사용합니다. 플러그인은 Linux 인스턴스의 호스트 이름을 EC2AMAZ-*XXXXXXX* 형식으로 변경합니다. `aws:domainJoin`에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서* 및 [AWS Systems Manager 명령 문서 플러그인 참조](https://docs.aws.amazon.com//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)를 참조하세요.

1. **인스턴스 유형** 섹션의 **인스턴스 유형** 드롭다운 목록에서 사용하려는 인스턴스 유형을 선택합니다.

1. **키 페어(로그인)** 섹션에서 새 키 페어 생성을 선택하거나 기존 키 페어에서 선택할 수 있습니다. 새로운 키 페어를 생성하려면 **새 키 페어 생성**을 선택합니다. 키 페어의 이름을 입력하고 **키 페어 유형** 및 **프라이빗 키 파일 형식**에 대한 옵션을 선택합니다. OpenSSH에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 **.pem**을 선택합니다. PuTTY에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 **.ppk**를 선택합니다. **Create key pair(키 페어 생성)**를 선택합니다. 브라우저에서 프라이빗 키 파일이 자동으로 다운로드됩니다. 안전한 장소에 프라이빗 키 파일을 저장합니다.
**중요**  
이때가 사용자가 프라이빗 키 파일을 저장할 수 있는 유일한 기회입니다.

1. **인스턴스 시작** 페이지의 **네트워크 설정** 섹션에서 **편집**을 선택합니다. **VPC -* 필수*** 드롭다운 목록에서 디렉터리가 생성된 **VPC**를 선택합니다.

1. **서브넷** 드롭다운 목록에서 VPC의 퍼블릭 서브넷 중 하나를 선택합니다. 선택한 서브넷에서는 인터넷 게이트웨이로 모든 외부 트래픽이 라우팅되어야 합니다. 그렇지 않으면 인스턴스를 원격으로 연결할 수 없게 됩니다.

   인터넷 게이트웨이에 연결하는 방법에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [인터넷 게이트웨이를 사용하여 인터넷에 연결](https://docs.aws.amazon.com//vpc/latest/userguide/VPC_Internet_Gateway.html)을 참조하세요.

1. **Auto-assign Public IP(퍼블릭 IP 자동 할당)**에서 **Enable(활성화)**을 선택합니다.

   EC2 인스턴스의 퍼블릭 및 프라이빗 IP 주소 지정에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 인스턴스 IP 주소 지정](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)을 참조하세요.

1. **방화벽(보안 그룹)** 설정의 경우 기본 설정을 사용하거나 필요에 맞게 변경할 수 있습니다.

1. **스토리지 구성** 설정의 경우 기본 설정을 사용하거나 필요에 맞게 변경할 수 있습니다.

1. **고급 세부 정보** 섹션을 선택하고 **도메인 조인 디렉터리** 드롭다운 목록에서 도메인을 선택합니다.
**참고**  
도메인 조인 디렉터리를 선택하면 다음이 표시될 수 있습니다.  

![\[도메인 조인 디렉터리를 선택할 때 오류 메시지가 표시됩니다. 기존 SSM 문서에 오류가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

이 오류는 EC2 시작 마법사가 예기치 않은 속성이 있는 기존 SSM 문서를 식별하는 경우 발생합니다. 다음 중 하나를 수행할 수 있습니다.  
이전에 SSM 문서를 편집했는데 속성이 예상되는 경우 닫기를 선택하고 변경 없이 EC2 인스턴스를 시작합니다.
여기에서 기존 SSM 문서 삭제 링크를 선택하여 SSM 문서를 삭제합니다. 이렇게 하면 속성이 올바른 SSM 문서를 생성할 수 있습니다. EC2 인스턴스를 시작하면 SSM 문서가 자동으로 생성됩니다.

1. **IAM 인스턴스 프로파일**의 경우 사전 요구 사항 섹션 **2단계: LinuxEC2DomainJoin 역할 생성**에서 이전에 생성한 IAM 역할을 선택합니다.

1. **인스턴스 시작**을 선택합니다.

**참고**  
SUSE Linux로 원활한 도메인 조인을 수행하는 경우 인증이 작동하려면 재부팅해야 합니다. **Linux 터미널에서 SUSE를 재부팅하려면 sudo reboot**를 입력합니다.

# Amazon EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD에 원활하게 조인
<a name="seamlessly_join_linux_to_shared_MAD"></a>

이 절차에서는 Amazon EC2 Linux 인스턴스를 공유 AWS Managed Microsoft AD에 원활하게 조인합니다. 이렇게 하려면 EC2 Linux 인스턴스를 시작하려는 계정의 EC2 인스턴스 역할에 AWS Secrets Manager IAM 읽기 정책을 생성합니다. 이 절차에서는 이를 `Account 2`이라고 합니다. 이 인스턴스는 `Account 1`라고 하는 다른 계정에서 공유되는 AWS 관리형 Microsoft AD를 사용합니다.

## 사전 조건
<a name="seamlessly_join_linux_to_shared_MAD_prereqs"></a>

Amazon EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD에 원활하게 조인하려면 먼저 다음을 완료해야 합니다.
+ 자습서의 1\$13단계, [자습서: 원활한 EC2 도메인 조인을 위한 AWS 관리형 Microsoft AD 디렉터리 공유](ms_ad_tutorial_directory_sharing.md). 이 자습서에서는 네트워크를 설정하고 AWS 관리형 Microsoft AD를 공유하는 방법을 안내합니다.
+ [AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 Linux 인스턴스를 원활하게 조인](seamlessly_join_linux_instance.md)에 설명된 절차입니다.

## 1단계. 계정 2에서 LinuxEC2DomainJoin 역할 생성
<a name="seamlessly_join_linux_to_shared_MAD_step_1"></a>

이 단계에서는 IAM 콘솔을 사용하여 `Account 2`에 로그인한 상태에서 EC2 Linux 인스턴스에 도메인 조인하는 데 사용할 IAM 역할을 만듭니다.

**LinuxEC2DomainJoin 역할 생성**

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

1. 왼쪽 탐색 창의 **액세스 관리**에서 **역할**을 선택합니다.

1. **역할** 페이지에서 **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔티티 유형 선택** 아래에서 **AWS 서비스**를 선택합니다.

1. **사용 사례**에서 **EC2**를 선택한 후 **다음**을 선택합니다.

1. **Filter policies(필터 정책)**의 경우 다음을 수행합니다.

   1. `AmazonSSMManagedInstanceCore`을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.

   1. `AmazonSSMDirectoryServiceAccess`을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.

   1. 이러한 정책을 추가한 후 **역할 생성**을 선택합니다.
**참고**  
`AmazonSSMDirectoryServiceAccess`는에서 관리하는 Active Directory에 인스턴스를 조인할 수 있는 권한을 제공합니다 Directory Service. `AmazonSSMManagedInstanceCore`는 사용하는 데 필요한 최소 권한을 제공합니다 AWS Systems Manager. 이러한 권한으로 역할을 생성하는 방법과 IAM 역할에 할당할 수 있는 기타 권한 및 정책에 관한 정보에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [Systems Manager용 인스턴스 요구 권한 구성](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-permissions.html)을 참조하세요.

1. **역할 이름** 필드에 새 역할의 이름(예: `LinuxEC2DomainJoin` 또는 자신이 선호하는 다른 이름)을 입력합니다.

1. *(선택 사항)* **역할 설명**에 설명을 입력합니다.

1. *(선택 사항)* **3단계: 태그 추가**에서 **새 태그 추가**를 선택하여 태그를 추가합니다. 태그 키-값 페어는 이 역할에 대한 액세스를 구성, 추적 또는 제어하는 데 사용됩니다.

1. **역할 생성**을 선택합니다.

## 2단계. AWS Secrets Manager 보안 암호를 공유하기 위한 교차 계정 리소스 액세스 생성
<a name="seamlessly_join_linux_to_shared_MAD_step_2"></a>

다음 섹션은 EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD와 원활하게 조인하기 위해 충족해야 하는 추가 요구 사항입니다. 이러한 요구 사항에는 리소스 정책 생성 및 적절한 서비스 및 리소스에 연결 등이 포함됩니다.

계정의 사용자가 다른 계정의 AWS Secrets Manager 보안 암호에 액세스하도록 허용하려면 리소스 정책과 자격 증명 정책 모두에서 액세스를 허용해야 합니다. 이러한 유형의 액세스를 [크로스 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)라고 합니다.

이러한 유형의 액세스 권한은 비밀 관리자 비밀과 동일한 계정의 신원에 대한 액세스 권한을 부여하는 것과는 다릅니다. 또한 보안 암호를 암호화하는 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) (KMS) 키를 자격 증명에서 사용하도록 허용해야 합니다. 이 권한은 교차 계정 액세스에 AWS 관리형 키(`aws/secretsmanager`)를 사용할 수 없으므로 필요합니다. 대신 생성한 KMS 키로 보안 암호를 암호화한 후 키 정책을 연결합니다. 보안 암호에 대한 암호화 키를 변경하려면 [AWS Secrets Manager 암호 수정](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)을 참조하세요.

**참고**  
사용하는 보안 암호에 AWS Secrets Manager따라 요금이 부과됩니다. 현재 기준의 전체적인 요금 목록은 [AWS Secrets Manager 요금](https://aws.amazon.com/secrets-manager/pricing/)을 참조하세요. Secrets Manager AWS 관리형 키 `aws/secretsmanager`가 생성하는를 사용하여 보안 암호를 무료로 암호화할 수 있습니다. 자체 KMS 키를 생성하여 보안 암호를 암호화하는 경우는 현재 AWS KMS 요금으로 AWS 요금을 부과합니다. 자세한 내용은 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/)을 참조하세요.

다음 단계를 통해 리소스 정책을 생성하여 사용자가 EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD에 원활하게 조인할 수 있습니다.

**Account 1의 보안 암호에 리소스 정책 연결**

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

1. 비밀 목록에서 [사전 조건](#seamlessly_join_linux_to_shared_MAD_prereqs)에서 만든 **비밀**을 선택합니다.

1. **개요** 탭의 **보안 암호 세부 정보 페이지**에서 **리소스 권한**까지 아래로 스크롤합니다.

1. **권한 편집**을 선택합니다.

   1. 정책 필드에 다음 정책을 입력합니다. 다음 정책은 `Account 2`의 **LinuxEC2DomainJoin**이 `Account 1`의 보안 암호에 액세스할 수 있도록 허용합니다. ARN 값을 [1단계](#seamlessly_join_linux_to_shared_MAD_step_1)에서 생성한 `LinuxEC2DomainJoin` 역할인 `Account 2`의 ARN 값으로 바꿉니다. 이 정책을 사용하려면 [AWS Secrets Manager 보안 암호에 권한 정책 연결을 참조하세요](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html).

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "AWS": "arn:aws:iam::123456789012:role/LinuxEC2DomainJoin"
           },
           "Action": "secretsmanager:GetSecretValue",
           "Resource": "*"
         }
       ]
     }
     ```

------

**Account 1의 KMS 키에 대한 키 정책에 명령문 추가**

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

1. 왼쪽 탐색 창에서 **고객 관리형 키**를 선택합니다.

1. **고객 관리형 키** 페이지에서 생성한 키를 선택합니다.

1. **키 세부 정보** 페이지에서 **키 정책**으로 이동하여 **편집**을 선택합니다.

1. 다음 키 정책 문은 `Account 2`의 `ApplicationRole`이 `Account 1`의 KMS 키를 사용하여 `Account 1`의 보안 암호를 복호화하도록 허용합니다. 이 명령문을 사용하려면 KMS 키의 키 정책에 추가합니다. 자세한 내용은 [키 정책 변경](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)을 참조하세요.

   ```
   {
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": "arn:aws:iam::Account2:role/ApplicationRole"
     },
     "Action": [
       "kms:Decrypt",
       "kms:DescribeKey"
     ],
     "Resource": "*"
   }
   ```

**Account 2의 자격 증명에 자격 증명 정책 연결**

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

1. 왼쪽 탐색 창의 **액세스 관리**에서 **정책**을 선택합니다.

1. **정책 생성**을 선택합니다. **정책 편집기**에서 **JSON**을 선택합니다.

1. 다음 정책은 `Account 2`의 `ApplicationRole`이 `Account 1`의 보안 암호에 액세스하고 `Account 1`의 암호화 키도 사용하여 보안 암호 값을 복호화하도록 허용합니다. Secrets Manager 콘솔의 **보안 암호 세부 정보** 페이지에 있는 **보안 암호 ARN** 아래에서 보안 암호에 대한 ARN을 찾을 수 있습니다. 또는 [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html)을 직접적으로 호출하여 보안 암호의 ARN을 식별할 수 있습니다. 리소스 ARN을 보안 암호 ARN 및 `Account 1`의 리소스 ARN으로 바꿉니다. 이 정책을 사용하려면 [AWS Secrets Manager 보안 암호에 권한 정책 연결을 참조하세요](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html).

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "secretsmanager:GetSecretValue",
         "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretName-AbCdEf"
       },
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:Describekey"
         ],
         "Resource": "arn:aws:kms:us-east-1:111122223333:key/Your_Encryption_Key"
       }
     ]
   }
   ```

------

1. **다음**을 선택한 다음 **변경 사항 저장**을 선택합니다.

1. [Attach a resource policy to the secret in Account 1](#step1ResourcePolicy)의 `Account 2`에서 생성한 역할을 찾아 선택합니다.

1. **권한 추가**에서 **정책 연결**을 선택합니다.

1. 검색 창에서 [Add a statement to the key policy for the KMS key in Account 1](#step2KeyPolicy)에서 생성한 정책을 찾아 상자를 선택하여 정책을 역할에 추가합니다. 그리고 **권한 추가**를 선택합니다.

## 3단계. Linux 인스턴스를 원활하게 조인
<a name="seamlessly_join_linux_to_shared_MAD_prereqs_step_3"></a>

이제 다음 절차를 사용하여 EC2 Linux 인스턴스를 공유 AWS 관리형 Microsoft AD에 원활하게 조인할 수 있습니다.

**Linux 인스턴스를 원활하게 조인**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) Amazon EC2 콘솔을 엽니다.

1. 탐색 모음의 리전 선택기에서 기존 디렉터리 AWS 리전 와 동일한를 선택합니다.

1. **EC2 대시보드**의 **시작 인스턴스** 섹션에서 **인스턴스 시작**을 선택합니다.

1. **인스턴스 시작** 페이지의 **이름 및 태그** 섹션에서 Linux EC2 인스턴스에 사용할 이름을 입력합니다.

1.  *(선택 사항)* **추가 태그 추가**에서 이 EC2 인스턴스에 대한 액세스를 구성, 추적, 제어할 태그-키 값 페어를 하나 이상 추가합니다.

1. **애플리케이션 및 OS 이미지(Amazon Machine Image)** 섹션에서 시작하려는 Linux AMI를 선택합니다.
**참고**  
사용되는 AMI에는 AWS Systems Manager (SSM Agent) 버전 2.3.1644.0 이상이 있어야 합니다. AMI에서 인스턴스를 시작하여 AMI에 설치된 SSM 에이전트 버전을 확인하려면 [현재 설치된 SSM 에이전트 버전 가져오기](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-get-version.html)를 참조하세요. SSM 에이전트를 업그레이드해야 하는 경우 [Linux용 EC2 인스턴스에 SSM 에이전트 설치 및 구성](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)을 참조하세요.  
SSM은 Linux 인스턴스를 Active Directory 도메인에 조인할 때 `aws:domainJoin` 플러그인을 사용합니다. 플러그인은 Linux 인스턴스의 호스트 이름을 EC2AMAZ-*XXXXXXX* 형식으로 변경합니다. `aws:domainJoin`에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서* 및 [AWS Systems Manager 명령 문서 플러그인 참조](https://docs.aws.amazon.com//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)를 참조하세요.

1. **인스턴스 유형** 섹션의 **인스턴스 유형** 드롭다운 목록에서 사용하려는 인스턴스 유형을 선택합니다.

1. **키 페어(로그인)** 섹션에서 새 키 페어 생성을 선택하거나 기존 키 페어에서 선택할 수 있습니다. 새로운 키 페어를 생성하려면 **새 키 페어 생성**을 선택합니다. 키 페어의 이름을 입력하고 **키 페어 유형** 및 **프라이빗 키 파일 형식**에 대한 옵션을 선택합니다. OpenSSH에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 **.pem**을 선택합니다. PuTTY에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 **.ppk**를 선택합니다. **Create key pair(키 페어 생성)**를 선택합니다. 브라우저에서 프라이빗 키 파일이 자동으로 다운로드됩니다. 안전한 장소에 프라이빗 키 파일을 저장합니다.
**중요**  
이때가 사용자가 프라이빗 키 파일을 저장할 수 있는 유일한 기회입니다.

1. **인스턴스 시작** 페이지의 **네트워크 설정** 섹션에서 **편집**을 선택합니다. **VPC -* 필수*** 드롭다운 목록에서 디렉터리가 생성된 **VPC**를 선택합니다.

1. **서브넷** 드롭다운 목록에서 VPC의 퍼블릭 서브넷 중 하나를 선택합니다. 선택한 서브넷에서는 인터넷 게이트웨이로 모든 외부 트래픽이 라우팅되어야 합니다. 그렇지 않으면 인스턴스를 원격으로 연결할 수 없게 됩니다.

   인터넷 게이트웨이에 연결하는 방법에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [인터넷 게이트웨이를 사용하여 인터넷에 연결](https://docs.aws.amazon.com//vpc/latest/userguide/VPC_Internet_Gateway.html)을 참조하세요.

1. **Auto-assign Public IP(퍼블릭 IP 자동 할당)**에서 **Enable(활성화)**을 선택합니다.

   EC2 인스턴스의 퍼블릭 및 프라이빗 IP 주소 지정에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 인스턴스 IP 주소 지정](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)을 참조하세요.

1. **방화벽(보안 그룹)** 설정의 경우 기본 설정을 사용하거나 필요에 맞게 변경할 수 있습니다.

1. **스토리지 구성** 설정의 경우 기본 설정을 사용하거나 필요에 맞게 변경할 수 있습니다.

1. **고급 세부 정보** 섹션을 선택하고 **도메인 조인 디렉터리** 드롭다운 목록에서 도메인을 선택합니다.
**참고**  
도메인 조인 디렉터리를 선택하면 다음이 표시될 수 있습니다.  

![\[도메인 조인 디렉터리를 선택할 때 오류 메시지가 표시됩니다. 기존 SSM 문서에 오류가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

이 오류는 EC2 시작 마법사가 예기치 않은 속성이 있는 기존 SSM 문서를 식별하는 경우 발생합니다. 다음 중 하나를 수행할 수 있습니다.  
이전에 SSM 문서를 편집했는데 속성이 예상되는 경우 닫기를 선택하고 변경 없이 EC2 인스턴스를 시작합니다.
여기에서 기존 SSM 문서 삭제 링크를 선택하여 SSM 문서를 삭제합니다. 이렇게 하면 속성이 올바른 SSM 문서를 생성할 수 있습니다. EC2 인스턴스를 시작하면 SSM 문서가 자동으로 생성됩니다.

1. **IAM 인스턴스 프로파일**의 경우 사전 요구 사항 섹션 **2단계: LinuxEC2DomainJoin 역할 생성**에서 이전에 생성한 IAM 역할을 선택합니다.

1. **인스턴스 시작**을 선택합니다.

**참고**  
SUSE Linux로 원활한 도메인 조인을 수행하는 경우 인증이 작동하려면 재부팅해야 합니다. **Linux 터미널에서 SUSE를 재부팅하려면 sudo reboot**를 입력합니다.

# Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 수동으로 조인
<a name="join_linux_instance"></a>

Amazon EC2 Windows 인스턴스 외에도 특정 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 조인할 수도 있습니다. 다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2(64비트 x86)
+ Amazon Linux 2023 AMI
+ Red Hat Enterprise Linux 8(HVM)(64비트 x86)
+ Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux Enterprise Server 15 SP1

**참고**  
기타 Linux 배포판 및 버전은 작동이 가능할 수도 있지만, 테스트는 거치지 않았습니다.

## AWS 관리형 Microsoft AD에 Linux 인스턴스 조인
<a name="join_linux_prereq"></a>

디렉터리에 Amazon Linux 혹은 CentOS, Red Hat, Ubuntu 인스턴스를 조인하려면 [Linux 인스턴스를 원활하게 조인](seamlessly_join_linux_instance.md#seamless-linux-join-instance)에 지정된 대로 인스턴스를 먼저 시작해야 합니다.

**중요**  
아래의 일부 절차들로 인해(올바르게 수행되지 않은 경우) 인스턴스 접속이나 사용이 불가능해질 수 있습니다. 따라서 이러한 절차를 수행하기 전에 인스턴스에 대한 백업을 생성하거나 스냅샷을 만드는 것이 좋습니다.

**디렉터리에 Linux 인스턴스 조인**  
다음 탭 중 하나를 이용해 특정 Linux 인스턴스의 단계를 수행합니다.

------
#### [ Amazon Linux ]<a name="amazonlinux"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service제공 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

1. Amazon Linux - 64비트 인스턴스가 업데이트되었는지 확인합니다.

   ```
   sudo yum -y update
   ```

1. Linux 인스턴스에 필요한 Amazon Linux 패키지를 설치합니다.
**참고**  
이러한 패키지 중 몇 개는 이미 설치가 되어 있을 수 있습니다.  
패키지를 설치할 때 몇 가지 팝업 구성 화면이 나타날 수 있습니다. 보통은 이러한 화면의 필드들을 공백 상태로 남겨둡니다.  
Amazon Linux  

   ```
   sudo yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
   ```
**참고**  
사용 중인 Amazon Linux 버전을 확인하는 데 도움이 필요하면 *Linux 인스턴스용 Amazon EC2 사용 설명서*에서 [Amazon Linux 이미지 식별](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#amazon-linux-image-id)을 참조하세요.

1. 다음 명령을 통해 디렉터리에 인스턴스를 조인합니다.

   ```
   sudo realm join -U join_account@EXAMPLE.COM example.com --verbose
   ```  
*join\$1account@EXAMPLE.COM*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 다시 시작된 후 SSH 클라이언트를 사용하여 인스턴스에 연결하고 다음 단계를 수행하여 AWS 위임된 관리자 그룹을 sudoers 목록에 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. `sudoers` 파일 끝부분에 다음을 추가하고 저장합니다.

      ```
      ## Add the "AWS Delegated Administrators" group from the example.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------
#### [ CentOS ]<a name="centos"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service제공 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

1. CentOS 7 인스턴스가 업데이트되었는지 확인합니다.

   ```
   sudo yum -y update
   ```

1. Linux 인스턴스에 필요한 CentOS 7 패키지를 설치합니다.
**참고**  
이러한 패키지 중 몇 개는 이미 설치가 되어 있을 수 있습니다.  
패키지를 설치할 때 몇 가지 팝업 구성 화면이 나타날 수 있습니다. 보통은 이러한 화면의 필드들을 공백 상태로 남겨둡니다.

   ```
   sudo yum -y install sssd realmd krb5-workstation samba-common-tools
   ```

1. 다음 명령을 통해 디렉터리에 인스턴스를 조인합니다.

   ```
   sudo realm join -U join_account@example.com example.com --verbose
   ```  
*join\$1account@example.com*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 다시 시작된 후 SSH 클라이언트를 사용하여 인스턴스에 연결하고 다음 단계를 수행하여 AWS 위임된 관리자 그룹을 sudoers 목록에 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. `sudoers` 파일 끝부분에 다음을 추가하고 저장합니다.

      ```
      ## Add the "AWS Delegated Administrators" group from the example.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------
#### [ Red Hat ]<a name="redhat"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service제공 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

1. Red Hat - 64비트 인스턴스가 업데이트되었는지 확인합니다.

   ```
   sudo yum -y update
   ```

1. Linux 인스턴스에 필요한 Red Hat 패키지를 설치합니다.
**참고**  
이러한 패키지 중 몇 개는 이미 설치가 되어 있을 수 있습니다.  
패키지를 설치할 때 몇 가지 팝업 구성 화면이 나타날 수 있습니다. 보통은 이러한 화면의 필드들을 공백 상태로 남겨둡니다.

   ```
   sudo yum -y install sssd realmd krb5-workstation samba-common-tools
   ```

1. 다음 명령을 통해 디렉터리에 인스턴스를 조인합니다.

   ```
   sudo realm join -v -U join_account example.com --install=/
   ```  
*join\$1account*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정용 **sAMAccountName**입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 다시 시작된 후 SSH 클라이언트를 사용하여 인스턴스에 연결하고 다음 단계를 수행하여 AWS 위임된 관리자 그룹을 sudoers 목록에 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. `sudoers` 파일 끝부분에 다음을 추가하고 저장합니다.

      ```
      ## Add the "AWS Delegated Administrators" group from the example.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------
#### [ SUSE ]<a name="suse"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동으로 설정하려면 특정 Linux 배포 및 버전에 대한 영구 [DNS 서버 설정에 대한 지침은 지식 센터의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법을](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/) 참조하세요. AWS 

1. SUSE Linux 15 인스턴스가 최신 버전인지 확인합니다.

   1. 패키지 리포지토리를 연결합니다.

      ```
      sudo SUSEConnect -p PackageHub/15.1/x86_64
      ```

   1. SUSE를 업데이트합니다.

      ```
      sudo zypper update -y
      ```

1. Linux 인스턴스에 필요한 SUSE Linux 15 패키지를 설치합니다.
**참고**  
이러한 패키지 중 몇 개는 이미 설치가 되어 있을 수 있습니다.  
패키지를 설치할 때 몇 가지 팝업 구성 화면이 나타날 수 있습니다. 보통은 이러한 화면의 필드들을 공백 상태로 남겨둡니다.

   ```
   sudo zypper -n install realmd adcli sssd sssd-tools sssd-ad samba-client krb5-client
   ```

1. 다음 명령을 통해 디렉터리에 인스턴스를 조인합니다.

   ```
   sudo realm join -U join_account example.com --verbose
   ```  
*join\$1account*  
도메인 조인 권한을 가진 *example.com* 도메인의 sAMAccountName입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름입니다.

   ```
   …
   realm: Couldn't join realm: Enabling SSSD in nsswitch.conf and PAM failed.
   ```

   다음 두 가지 반환이 예상됩니다.

   ```
   ! Couldn't authenticate with keytab while discovering which salt to use:
   ! Enabling SSSD in nsswitch.conf and PAM failed.
   ```

1. **PAM**에서 **SSSD**를 수동으로 활성화합니다.

   ```
   sudo pam-config --add --sss
   ```

1. nsswitch.conf에서 SSSD를 활성화하도록 nsswitch.conf를 편집합니다.

   ```
   sudo vi /etc/nsswitch.conf
   ```

   ```
   passwd: compat sss
   group:  compat sss
   shadow: compat sss
   ```

1. /etc/pam.d/common-session에 다음 줄을 추가하여 초기 로그인 시 홈 디렉터리를 자동으로 생성합니다.

   ```
   sudo vi /etc/pam.d/common-session
   ```

   ```
   session optional pam_mkhomedir.so skel=/etc/skel umask=077
   ```

1. 인스턴스를 재부팅하여 도메인 조인 프로세스를 완료합니다.

   ```
   sudo reboot
   ```

1. SSH 클라이언트를 사용하여 인스턴스에 다시 연결하여 도메인 조인이 성공적으로 완료되었는지 확인하고 추가 단계를 완료합니다.

   1. 인스턴스가 도메인에 등록되었는지 확인하려면

      ```
      sudo realm list
      ```

      ```
      example.com
        type: kerberos
        realm-name: EXAMPLE.COM
        domain-name: example.com
        configured: kerberos-member
        server-software: active-directory
        client-software: sssd
        required-package: sssd-tools
        required-package: sssd
        required-package: adcli
        required-package: samba-client
        login-formats: %U@example.com
        login-policy: allow-realm-logins
      ```

   1. SSSD 데몬의 상태를 확인하려면

      ```
      systemctl status sssd
      ```

      ```
      sssd.service - System Security Services Daemon
         Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled)
         Active: active (running) since Wed 2020-04-15 16:22:32 UTC; 3min 49s ago
       Main PID: 479 (sssd)
          Tasks: 4
         CGroup: /system.slice/sssd.service
                 ├─479 /usr/sbin/sssd -i --logger=files
                 ├─505 /usr/lib/sssd/sssd_be --domain example.com --uid 0 --gid 0 --logger=files
                 ├─548 /usr/lib/sssd/sssd_nss --uid 0 --gid 0 --logger=files
                 └─549 /usr/lib/sssd/sssd_pam --uid 0 --gid 0 --logger=files
      ```

1. SSH 및 콘솔을 통해 사용자 액세스를 허용하려면

   ```
   sudo realm permit join_account@example.com
   ```

   SSH 및 콘솔을 통해 도메인 그룹 액세스를 허용하려면

   ```
   sudo realm permit -g 'AWS Delegated Administrators'
   ```

   또는 모든 사용자 액세스를 허용하려면

   ```
   sudo realm permit --all
   ```

1. 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 13. 인스턴스가 다시 시작된 후 SSH 클라이언트를 사용하여 인스턴스에 연결하고 다음 단계를 수행하여 AWS 위임된 관리자 그룹을 sudoers 목록에 추가합니다.

   1. 다음 명령을 통해 sudoers 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. sudoers 파일 끝부분에 다음을 추가하고 저장합니다.

      ```
      ## Add the "Domain Admins" group from the awsad.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL) NOPASSWD: ALL
      ```

------
#### [ Ubuntu ]<a name="ubuntu"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service제공 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

1. Ubuntu - 64비트 인스턴스가 업데이트되었는지 확인합니다.

   ```
   sudo apt-get update
   sudo apt-get -y upgrade
   ```

1. Linux 인스턴스에 필요한 Ubuntu 패키지를 설치합니다.
**참고**  
이러한 패키지 중 몇 개는 이미 설치가 되어 있을 수 있습니다.  
패키지를 설치할 때 몇 가지 팝업 구성 화면이 나타날 수 있습니다. 보통은 이러한 화면의 필드들을 공백 상태로 남겨둡니다.

   ```
   sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
   ```

1. 역방향 DNS 확인을 비활성화하고 기본 영역을 도메인의 FQDN으로 설정합니다. 영역이 작동하려면 Ubuntu 인스턴스가 DNS에서 역 확인이 가능**해야 합니다**. 그렇지 않을 경우 다음과 같이 /etc/krb5.conf에서 역 DNS를 비활성해야 합니다.

   ```
   sudo vi /etc/krb5.conf
   ```

   ```
   [libdefaults]
   default_realm = EXAMPLE.COM
   rdns = false
   ```

1. 다음 명령을 통해 디렉터리에 인스턴스를 조인합니다.

   ```
   sudo realm join -U join_account example.com --verbose
   ```  
*join\$1account@example.com*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정용 **sAMAccountName**입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 다시 시작된 후 SSH 클라이언트를 사용하여 인스턴스에 연결하고 다음 단계를 수행하여 AWS 위임된 관리자 그룹을 sudoers 목록에 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. `sudoers` 파일 끝부분에 다음을 추가하고 저장합니다.

      ```
      ## Add the "AWS Delegated Administrators" group from the example.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------

## 계정 로그인 액세스 제한
<a name="linux_filter"></a>

모든 계정을 Active Directory에 정의하면 기본으로 디렉토리의 모든 사용자는 인스턴스에 로그인할 수 있습니다. 특정 사용자만 **sssd.conf**의 **ad\$1access\$1filter**으로 인스턴스에 로그인할 수 있습니다. 예제:

```
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

*memberOf*  
특정 그룹의 멤버인 사용자는 반드시 인스턴스에 액세스할 수 있어야 한다는 뜻입니다.

*cn*  
액세스해야 하는 그룹의 일반 이름입니다. 이 예제에서 그룹 이름은 *admins*입니다.

*ou*  
위의 그룹이 위치해 있는 조직 단위(OU)입니다. 이 예제에서 OU는 *Testou*입니다.

*dc*  
도메인의 도메인 구성 요소입니다. 이 예제에서는 *example*입니다.

*dc*  
추가적인 도메인 구성 요소입니다. 이 예제에서는 *com*입니다.

현재 사용자는 **ad\$1access\$1filter**를 **/etc/sssd/sssd.conf**에 수동으로 추가해야 합니다.

텍스트 편집기에서 **/etc/sssd/sssd.conf** 파일을 엽니다.

```
sudo vi /etc/sssd/sssd.conf
```

추가를 하고 나면 **sssd.conf**가 다음과 같이 보일 수 있습니다.

```
[sssd]
domains = example.com
config_file_version = 2
services = nss, pam

[domain/example.com]
ad_domain = example.com
krb5_realm = EXAMPLE.COM
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

이 구성이 활성화되려면 sssd 서비스를 재시작해야 합니다.

```
sudo systemctl restart sssd.service
```

또는 다음 작업을 사용할 수 있습니다.

```
sudo service sssd restart
```

모든 계정을 Active Directory에 정의하면 기본으로 디렉토리의 모든 사용자는 인스턴스에 로그인할 수 있습니다. 특정 사용자만 **sssd.conf**의 **ad\$1access\$1filter**으로 인스턴스에 로그인할 수 있습니다.

예제:

```
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

*memberOf*  
특정 그룹의 멤버인 사용자는 반드시 인스턴스에 액세스할 수 있어야 한다는 뜻입니다.

*cn*  
액세스해야 하는 그룹의 일반 이름입니다. 이 예제에서 그룹 이름은 *admins*입니다.

*ou*  
위의 그룹이 위치해 있는 조직 단위(OU)입니다. 이 예제에서 OU는 *Testou*입니다.

*dc*  
도메인의 도메인 구성 요소입니다. 이 예제에서는 *example*입니다.

*dc*  
추가적인 도메인 구성 요소입니다. 이 예제에서는 *com*입니다.

현재 사용자는 **ad\$1access\$1filter**를 **/etc/sssd/sssd.conf**에 수동으로 추가해야 합니다.

1. 텍스트 편집기에서 **/etc/sssd/sssd.conf** 파일을 엽니다.

   ```
   sudo vi /etc/sssd/sssd.conf
   ```

1. 추가를 하고 나면 **sssd.conf**가 다음과 같이 보일 수 있습니다.

   ```
   [sssd]
   domains = example.com
   config_file_version = 2
   services = nss, pam
   
   [domain/example.com]
   ad_domain = example.com
   krb5_realm = EXAMPLE.COM
   realmd_tags = manages-system joined-with-samba
   cache_credentials = True
   id_provider = ad
   krb5_store_password_if_offline = True
   default_shell = /bin/bash
   ldap_id_mapping = True
   use_fully_qualified_names = True
   fallback_homedir = /home/%u@%d
   access_provider = ad
   ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
   ```

1. 이 구성이 활성화되려면 sssd 서비스를 재시작해야 합니다.

   ```
   sudo systemctl restart sssd.service
   ```

   또는 다음 작업을 사용할 수 있습니다.

   ```
   sudo service sssd restart
   ```

## ID 매핑
<a name="managed-ad-id-mapping"></a>

ID 매핑은 UNIX/Linux 사용자 식별자(UID)와 그룹 식별자(GID) 및 Windows 및 Active Directory 보안 식별자(SID) 자격 증명 간의 통합 환경을 유지하기 위해 두 가지 방법으로 수행할 수 있습니다. 이러한 방법은 다음과 같습니다.

1. 중앙화

1. Distributed

**참고**  
Active Directory의 중앙 집중식 사용자 자격 증명 매핑에는 휴대용 운영 체제 인터페이스, 즉 POSIX가 필요합니다.

**중앙 집중식 사용자 자격 증명 매핑**  
Active Directory 또는 다른 LDAP(Lightweight Directory Access Protocol) 서비스는 Linux 사용자에게 UID 및 GID를 제공합니다. Active Directory에서 POSIX 확장이 구성된 경우 이러한 식별자는 사용자의 속성에 저장됩니다.
+ UID - Linux 사용자 이름(문자열)
+ UID 번호 - Linux 사용자 ID 번호(정수)
+ GID 번호 - Linux 그룹 ID 번호(정수)

Active Directory에서 UID 및 GID를 사용하도록 Linux 인스턴스를 구성하려면 sssd.conf 파일에 `ldap_id_mapping = False`를 설정합니다. 이 값을 설정하기 전에 Active Directory의 사용자 및 그룹에 UID, UID 번호 및 GID 번호를 추가했는지 확인합니다.

**분산 사용자 자격 증명 매핑**  
Active Directory에 POSIX 확장이 없거나 자격 증명 매핑을 중앙에서 관리하지 않기로 선택한 경우 Linux는 UID 및 GID 값을 계산할 수 있습니다. Linux는 사용자의 고유한 보안 식별자(SID)를 사용하여 일관성을 유지합니다.

분산 사용자 ID 매핑을 구성하려면 sssd.conf 파일에 `ldap_id_mapping = True`를 설정합니다.

**일반적인 문제**  
`ldap_id_mapping = False`를 설정하면 SSSD 서비스를 시작하는 데 실패하는 경우가 있습니다. 이 실패의 원인은 UID 변경이 지원되지 않기 때문입니다. ID 매핑에서 POSIX 속성으로 변경하거나, POSIX 속성에서 ID 매핑으로 변경할 때마다 SSSD 캐시를 삭제하는 것이 좋습니다. ID 매핑 및 ldap\$1id\$1mapping 파라미터에 대한 자세한 내용은 Linux 명령줄의 sssd-ldap(8) 매뉴얼 페이지를 참조하세요.

## Linux 인스턴스에 연결
<a name="linux_connect"></a>

SSH 클라이언트를 사용하여 인스턴스 연결을 하면 사용자 이름을 입력하라는 메시지가 나타납니다. 사용자는 `username@example.com` 또는 `EXAMPLE\username` 형식으로 사용자 이름을 입력할 수 있습니다. 응답은 사용 중인 Linux 배포판에 따라 다음과 같이 나타납니다.

**Amazon Linux, Red Hat Enterprise Linux, CentOS Linux**

```
login as: johndoe@example.com
johndoe@example.com's password:
Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX
```

**SUSE Linux**

```
SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit)

As "root" (sudo or sudo -i) use the:
  - zypper command for package management
  - yast command for configuration management

Management and Config: https://www.suse.com/suse-in-the-cloud-basics
Documentation: https://www.suse.com/documentation/sles-15/
Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud

Have a lot of fun...
```

**Ubuntu Linux**

```
login as: admin@example.com
admin@example.com@10.24.34.0's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 18 22:03:35 UTC 2020

  System load:  0.01              Processes:           102
  Usage of /:   18.6% of 7.69GB   Users logged in:     2
  Memory usage: 16%               IP address for eth0: 10.24.34.1
  Swap usage:   0%
```

# Winbind를 사용하여 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory에 수동으로 조인
<a name="join_linux_instance_winbind"></a>

Winbind 서비스를 사용하여 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory 도메인에 수동으로 조인할 수 있습니다. 이렇게 하면 기존 온프레미스 Active Directory 사용자가 AWS 관리형 Microsoft AD Active Directory에 조인된 Linux 인스턴스에 액세스할 때 Active Directory 자격 증명을 사용할 수 있습니다. 다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2(64비트 x86)
+ Amazon Linux 2023 AMI
+ Red Hat Enterprise Linux 8(HVM)(64비트 x86)
+ Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux Enterprise Server 15 SP1

**참고**  
기타 Linux 배포판 및 버전은 작동이 가능할 수도 있지만, 테스트는 거치지 않았습니다.

## AWS 관리형 Microsoft AD Active Directory에 Linux 인스턴스 조인
<a name="join_linux_winbind_prereq"></a>

**중요**  
아래의 일부 절차들로 인해(올바르게 수행되지 않은 경우) 인스턴스 접속이나 사용이 불가능해질 수 있습니다. 따라서 이러한 절차를 수행하기 전에 인스턴스에 대한 백업을 생성하거나 스냅샷을 만드는 것이 좋습니다.

**디렉터리에 Linux 인스턴스 조인**  
다음 탭 중 하나를 이용해 특정 Linux 인스턴스의 단계를 수행합니다.

------
#### [ Amazon Linux/CENTOS/REDHAT ]<a name="amazonlinux"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동으로 설정하려면 특정 Linux 배포 및 버전에 대한 영구 [DNS 서버 설정에 대한 지침은 지식 센터의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법을](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/) 참조하세요. AWS 

1. Linux 인스턴스가 최신 버전인지 확인합니다.

   ```
   sudo yum -y update
   ```

1. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

   ```
   sudo yum -y install authconfig samba samba-client samba-winbind samba-winbind-clients
   ```

1. 오류가 발생할 경우 되돌릴 수 있도록 기본 `smb.conf` 파일을 백업해 두세요.

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 텍스트 편집기에서 저장된 원본 파일[`/etc/samba/smb.conf`]을 엽니다.

   ```
   sudo vim /etc/samba/smb.conf
   ```

   아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 텍스트 편집기에서 호스트 파일[`/etc/hosts`]을 엽니다.

   ```
   sudo vim /etc/hosts
   ```

   다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**참고**  
`/etc/hosts` 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

1. net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account@example.com*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 winbind 인증에 필요한 항목을 추가합니다.

   ```
   sudo authconfig --enablewinbind --enablewinbindauth  --enablemkhomedir   --update
   ```

1. `/etc/ssh/sshd_config` 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ```
      ## Adding Domain Users/Groups.
      %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------
#### [ SUSE ]<a name="suse"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동으로 설정하려면 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포 및 버전에 대한 영구 DNS 서버 설정에 대한 지침을 참조하세요.

1. SUSE Linux 15 인스턴스가 최신 버전인지 확인합니다.

   1. 패키지 리포지토리를 연결합니다.

      ```
      sudo SUSEConnect -p PackageHub/15.1/x86_64
      ```

   1. SUSE를 업데이트합니다.

      ```
      sudo zypper update -y
      ```

1. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

   ```
   sudo zypper in -y samba samba-winbind
   ```

1. 오류가 발생할 경우 되돌릴 수 있도록 기본 `smb.conf` 파일을 백업해 두세요.

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 텍스트 편집기에서 저장된 원본 파일[`/etc/samba/smb.conf`]을 엽니다.

   ```
   sudo vim /etc/samba/smb.conf
   ```

   아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 텍스트 편집기에서 호스트 파일[`/etc/hosts`]을 엽니다.

   ```
   sudo vim /etc/hosts
   ```

   다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**참고**  
`/etc/hosts` 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

1. 다음 명령을 통해 디렉터리에 Linux 인스턴스를 조인합니다.

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account*  
도메인 조인 권한을 가진 *example.com* 도메인의 sAMAccountName입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름입니다.

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.

   ```
   sudo pam-config --add --winbind --mkhomedir
   ```

1. 텍스트 편집기에서 Name Service Switch 구성 파일[`/etc/nsswitch.conf`]을 엽니다.

   ```
   vim /etc/nsswitch.conf
   ```

   아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.

   ```
   passwd: files winbind
   shadow: files winbind
   group:  files winbind
   ```

1. `/etc/ssh/sshd_config` 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vim /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ```
      ## Adding Domain Users/Groups.
      %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------
#### [ Ubuntu ]<a name="ubuntu"></a>

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

1.  Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동으로 설정하려면 AWS 지식 센터의 [프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)에서 특정 Linux 배포 및 버전에 대한 영구 DNS 서버 설정에 대한 지침을 참조하세요.

1. Linux 인스턴스가 최신 버전인지 확인합니다.

   ```
   sudo apt-get -y upgrade
   ```

1. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

   ```
   sudo apt -y install samba winbind libnss-winbind libpam-winbind
   ```

1. 오류가 발생할 경우 되돌릴 수 있도록 기본 `smb.conf` 파일을 백업해 두세요.

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 텍스트 편집기에서 저장된 원본 파일[`/etc/samba/smb.conf`]을 엽니다.

   ```
   sudo vim /etc/samba/smb.conf
   ```

   아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 텍스트 편집기에서 호스트 파일[`/etc/hosts`]을 엽니다.

   ```
   sudo vim /etc/hosts
   ```

   다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**참고**  
`/etc/hosts` 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

1. net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account@example.com*  
도메인 조인 권한을 가진 *example.com* 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 [AWS 관리형 Microsoft AD에 대한 디렉터리 조인 권한 위임](directory_join_privileges.md)을 참조하세요.  
*example.com*  
디렉터리의 정규화된 DNS 이름.

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.

   ```
   sudo pam-auth-update --add --winbind --enable mkhomedir
   ```

1. 텍스트 편집기에서 Name Service Switch 구성 파일[`/etc/nsswitch.conf`]을 엽니다.

   ```
   vim /etc/nsswitch.conf
   ```

   아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.

   ```
   passwd: compat winbind
   group:  compat winbind
   shadow: compat winbind
   ```

1. `/etc/ssh/sshd_config` 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

   1. 텍스트 편집기에서 `/etc/ssh/sshd_config` 파일을 엽니다.

      ```
      sudo vim /etc/ssh/sshd_config
      ```

   1. `PasswordAuthentication` 설정값을 `yes`로 설정합니다.

      ```
      PasswordAuthentication yes
      ```

   1. SSH 서비스를 다시 시작합니다.

      ```
      sudo systemctl restart sshd.service
      ```

      대안:

      ```
      sudo service sshd restart
      ```

1. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

   1. 다음 명령을 통해 `sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ```
      ## Adding Domain Users/Groups.
      %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\$1<space>"를 사용합니다.

------

## Linux 인스턴스에 연결
<a name="linux_winbind_connect"></a>

SSH 클라이언트를 사용하여 인스턴스 연결을 하면 사용자 이름을 입력하라는 메시지가 나타납니다. 사용자는 `username@example.com` 또는 `EXAMPLE\username` 형식으로 사용자 이름을 입력할 수 있습니다. 응답은 사용 중인 Linux 배포판에 따라 다음과 같이 나타납니다.

**Amazon Linux, Red Hat Enterprise Linux, CentOS Linux**

```
login as: johndoe@example.com
johndoe@example.com's password:
Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX
```

**SUSE Linux**

```
SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit)

As "root" (sudo or sudo -i) use the:
  - zypper command for package management
  - yast command for configuration management

Management and Config: https://www.suse.com/suse-in-the-cloud-basics
Documentation: https://www.suse.com/documentation/sles-15/
Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud

Have a lot of fun...
```

**Ubuntu Linux**

```
login as: admin@example.com
admin@example.com@10.24.34.0's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 18 22:03:35 UTC 2020

  System load:  0.01              Processes:           102
  Usage of /:   18.6% of 7.69GB   Users logged in:     2
  Memory usage: 16%               IP address for eth0: 10.24.34.1
  Swap usage:   0%
```