

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

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

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

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

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

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

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

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

**Topics**
+ [

## SSH 연결 사전 조건
](#ssh-prereqs-linux-from-linux-macos)
+ [

## SSH 클라이언트를 사용하여 Linux 인스턴스에 연결
](#connect-linux-inst-sshClient)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   다음은 응답의 예입니다.

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

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

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

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

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

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

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

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

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

**Topics**
+ [

## 사전 조건
](#putty-prereqs)
+ [PuTTYgen을 사용하여 프라이빗 키 변환](#putty-private-key)
+ [

## Linux 인스턴스에 연결합니다
](#putty-ssh)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

**Topics**
+ [

## 기본 사용자 이름
](#ami-default-user-names)
+ [

## 고려 사항
](#add-user-best-practice)
+ [

## 사용자 생성
](#create-user-account)
+ [

## 사용자 제거
](#delete-user-account)

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

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

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

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

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

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

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

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

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

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

**사용자 생성**

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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