

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

# 터널을 열고 브라우저 기반 SSH를 사용하여 원격 디바이스에 액세스
<a name="tunneling-tutorial-quick-setup"></a>

빠른 설정 또는 수동 설정 방법을 사용하여 터널을 생성할 수 있습니다. 이 자습서에서는 빠른 설정 방법을 사용하여 터널을 열고 브라우저 기반 SSH를 사용하여 원격 디바이스에 연결하는 방법을 보여줍니다. 수동 설정 방법을 사용하여 터널을 여는 방법의 예는 [수동 설정을 사용하여 터널을 열고 원격 디바이스에 연결](tunneling-tutorial-manual-setup.md) 섹션을 참조하세요.

빠른 설정 방법을 사용하면 편집 가능한 기본 구성으로 새 터널을 생성할 수 있습니다. 웹 기반 로컬 프록시가 구성되며, 액세스 토큰이 MQTT를 사용하여 원격 대상 디바이스에 자동으로 전달됩니다. 터널을 생성한 후 콘솔 내에서 명령줄 인터페이스를 사용하여 원격 디바이스와 상호 작용을 시작할 수 있습니다.

빠른 설정 방법의 경우 SSH를 대상 서비스로 사용하여 원격 디바이스에 액세스해야 합니다. 다양한 설정 방법에 대한 자세한 내용은 [터널 설정 방법](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-setup-methods) 섹션을 참조하세요.

## 빠른 설정 방법의 사전 조건
<a name="tunneling-tutorial-quick-prerequisites"></a>
+ 원격 디바이스 뒤에 있는 방화벽에서 포트 443의 아웃바운드 트래픽을 허용해야 합니다. 생성하는 터널은 이 포트를 사용하여 원격 디바이스에 연결됩니다.
+ 디바이스 게이트웨이에 연결되고 MQTT 주제 구독으로 구성된 원격 디바이스에서 실행되는 IoT AWS IoT 디바이스 에이전트( 참조[IoT 에이전트 코드 조각](configure-remote-device.md#agent-snippet))가 있습니다. 자세한 내용은 [디바이스를 AWS IoT 디바이스 게이트웨이에 연결을 참조하세요](https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html).
+ 원격 디바이스에서 실행 중인 SSH 데몬이 있어야 합니다.

## 터널 열기
<a name="open-tunnel-quick"></a>

 AWS Management Console, AWS IoT API 참조 또는를 사용하여 보안 터널을 열 수 있습니다 AWS CLI. 선택적으로 대상 이름을 구성할 수 있지만 이 자습서에서는 필요하지 않습니다. 대상을 구성하면 보안 터널링이 MQTT를 사용하여 원격 디바이스에 액세스 토큰을 자동으로 전달합니다. 자세한 내용은 [AWS IoT 콘솔의 터널 생성 방법](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows) 단원을 참조하십시오.

**콘솔을 사용하여 터널을 열려면**

1. [AWS IoT 콘솔의 터널 허브](https://console.aws.amazon.com/iot/home#/tunnels)로 이동하고 **Create tunnel**(터널 생성)을 선택합니다.  
![\[AWS IoT 터널 생성, 닫기 또는 삭제 옵션이 포함된 빈 터널 목록을 보여주는 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnels-page.png)

1. 이 자습서에서는 터널 생성 방법으로 **Quick setup**(빠른 설정)을 선택한 후 **Next**(다음)를 선택합니다.
**참고**  
생성한 사물의 세부 정보 페이지에서 보안 터널을 만드는 경우 새 터널을 생성할지 아니면 기존 터널을 사용할지를 선택할 수 있습니다. 자세한 내용은 [원격 디바이스에 대한 터널을 열고 브라우저 기반 SSH 사용](tunneling-tutorial-existing-tunnel.md) 단원을 참조하십시오.  
![\[SSH를 사용한 빠른 설정 또는 수동 설정을 위한 옵션이 포함된 설정 방법 섹션으로, 빠른 설정을 설명하면 프록시 및 액세스 토큰이 자동으로 구성됩니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnels-choose-quick.PNG)

1. 터널 구성 세부 정보를 검토하고 확인합니다. 터널을 생성하려면 **Confirm and create**(확인 및 생성)를 선택합니다. 이러한 세부 정보를 편집하려면 **Previous**(이전)를 선택하여 이전 페이지로 돌아간 다음 터널을 확인하고 생성합니다.
**참고**  
빠른 설정을 사용하는 경우 서비스 이름을 편집할 수 없습니다. **SSH**를 **Service**(서비스)로 사용해야 합니다.

1. **Done**(완료)을 선택하여 터널을 생성합니다.

   이 자습서에서는 소스 또는 대상 액세스 토큰을 다운로드할 필요가 없습니다. 이러한 토큰은 한 번만 사용하여 터널에 연결할 수 있습니다. 터널의 연결이 끊어지면 새 토큰을 생성하고 원격 디바이스로 전송하여 터널에 다시 연결할 수 있습니다. 자세한 내용은 [터널 액세스 토큰 재전송](tunneling-tutorial-manual-setup.md#resend-access-tokens) 단원을 참조하십시오.  
![\[보안 터널 연결을 생성하기 위한 소스 및 대상 액세스 토큰과 필요한 경우 토큰 교체 및 재전송에 대한 지침을 보여주는 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnel-success.png)

**API를 사용하여 터널을 열려면**  
새 터널을 열기 위해 [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html) API 작업을 사용할 수 있습니다.

**참고**  
 AWS IoT 콘솔에서만 빠른 설정 방법을 사용하여 터널을 생성할 수 있습니다. AWS IoT API 참조 API 또는를 사용하는 경우 수동 설정 방법을 AWS CLI사용합니다. 기존에 생성한 터널을 열고 빠른 설정을 사용하도록 터널의 설정 방법을 변경할 수 있습니다. 자세한 내용은 [기존 터널을 열고 브라우저 기반 SSH 사용](tunneling-tutorial-existing-tunnel.md#tunneling-tutorial-existing-convert-tunnel) 단원을 참조하십시오.

다음 예제에서는 이 API 작업을 실행하는 방법을 보여줍니다. 선택적으로 사물 이름과 대상 서비스를 지정하려면 `DestinationConfig` 파라미터를 사용합니다. 이 파라미터를 이용하는 방법의 예는 [원격 디바이스에 대한 새 터널 열기](tunneling-tutorial-existing-tunnel.md#tunneling-tutorial-existing-open-tunnel) 섹션을 참조하세요.

```
aws iotsecuretunneling open-tunnel
```

이 명령을 실행하면 새 터널이 생성되고 소스 및 대상 액세스 토큰이 제공됩니다.

```
{
    "tunnelId": "01234567-89ab-0123-4c56-789a01234bcd",
    "tunnelArn": "arn:aws:iot:us-east-1:123456789012:tunnel/01234567-89ab-0123-4c56-789a01234bcd",
    "sourceAccessToken": "<SOURCE_ACCESS_TOKEN>",
    "destinationAccessToken": "<DESTINATION_ACCESS_TOKEN>"
}
```

## 브라우저 기반 SSH 사용
<a name="tunneling-tutorial-quick-browser"></a>

빠른 설정 방법을 사용하여 터널을 생성하고 대상 디바이스가 터널에 연결되면 브라우저 기반 SSH를 사용하여 원격 디바이스에 액세스할 수 있습니다. 브라우저 기반 SSH를 사용하면 콘솔 내에서 상황별 명령줄 인터페이스에 명령을 입력하여 원격 디바이스와 직접 통신할 수 있습니다. 이 기능을 사용하는 경우 콘솔 외부에서 터미널을 열거나 로컬 프록시를 구성할 필요가 없기 때문에 원격 디바이스와 더욱 쉽게 상호 작용할 수 있습니다.

**브라우저 기반 SSH를 사용하려면**

1. [AWS IoT 콘솔의 터널 허브](https://console.aws.amazon.com/iot/home#/tunnels)로 이동하고 생성한 터널을 선택하여 세부 정보를 봅니다.

1. **Secure Shell(SSH)** 섹션을 확장한 다음 **Connect**(연결)를 선택합니다.

1. 사용자 이름과 암호를 제공하여 SSH 연결에 인증할지 여부를 선택하거나, 보다 안전한 인증을 위해 디바이스의 프라이빗 키를 사용할 수 있습니다. 프라이빗 키를 사용하여 인증하는 경우 PEM 형식(256 및 512) RSA 키만 AWS IoT Secure Tunneling SSH 콘솔에서 작동합니다.
   + 사용자 이름과 암호를 사용하여 연결하려면 **Use password**(암호 사용)를 선택합니다. 그런 다음 사용자 이름과 암호를 입력하고 브라우저 내 CLI를 사용할 수 있습니다.
   + 대상 디바이스의 프라이빗 키를 사용하여 연결하려면 **Use private key**(프라이빗 키 사용)를 선택합니다. 사용자 이름을 지정하고 디바이스의 프라이빗 키 파일을 업로드한 다음 **Connect**(연결)를 선택하여 브라우저 내 CLI 사용을 시작합니다.  
![\[사용자 이름 필드와 미리 선택한 프라이빗 키 파일을 선택하거나 사용하는 옵션을 보여주는 프라이빗 키로 브라우저 CLI를 통해 연결하는 양식 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnel-browser-private-key.png)

SSH 연결에 인증한 후에는 로컬 프록시가 이미 구성되어 있으므로 신속하게 명령을 입력하고 브라우저 CLI를 사용하여 디바이스와 상호 작용할 수 있습니다.

![\[JavaScript 애플리케이션에서 상태 및 기본 설정을 관리하기 위한 React 후크를 보여주는 코드 조각입니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnel-browser-cli.PNG)


터널 지속 시간 이후에도 브라우저 CLI가 계속 열려 있으면 시간 초과로 인해 명령줄 인터페이스의 연결이 끊어질 수 있습니다. 터널을 복제하고 다른 세션을 시작하여 콘솔 자체 내에서 원격 디바이스와 상호 작용할 수 있습니다.

## 브라우저 기반 SSH 사용 시 문제 해결
<a name="tunneling-tutorial-browser-troubleshoot"></a>

다음은 브라우저 기반 SSH를 사용할 때 발생할 수 있는 몇 가지 문제를 해결하는 방법을 보여줍니다.
+ 

**명령줄 인터페이스 대신 오류가 표시됨**  
대상 디바이스의 연결이 끊어졌기 때문에 오류가 표시될 수 있습니다. **Generate new access tokens**(새 액세스 토큰 생성)를 선택하여 새 액세스 토큰을 생성하고 MQTT를 사용하여 원격 디바이스로 토큰을 전송할 수 있습니다. 새 토큰을 사용하여 터널에 다시 연결할 수 있습니다. 터널에 다시 연결하면 기록이 지워지고 명령줄 세션이 새로 고쳐집니다.
+ 

**프라이빗 키를 사용하여 인증할 때 터널 연결 해제 오류가 표시됨**  
프라이빗 키가 대상 디바이스에서 수락되지 않았기 때문에 오류가 표시될 수 있습니다. 이 오류를 해결하려면 인증을 위해 업로드한 프라이빗 키 파일을 확인합니다. 여전히 오류가 표시되면 디바이스 로그를 확인합니다. 원격 디바이스로 새 액세스 토큰을 전송하여 터널에 다시 연결해 볼 수도 있습니다.
+ 

**세션을 사용할 때 터널이 닫힘**  
터널이 지정된 시간 이상 열려 있어서 터널이 닫혔다면 명령줄 세션의 연결이 끊어질 수 있습니다. 터널이 닫힌 후에는 터널을 다시 열 수 없습니다. 다시 연결하려면 디바이스에 대한 다른 터널을 열어야 합니다.

  터널을 복제하여 닫힌 터널과 동일한 구성으로 새 터널을 생성할 수 있습니다. AWS IoT 콘솔에서 닫힌 터널을 복제할 수 있습니다. 터널을 복제하려면 닫힌 터널을 선택하여 세부 정보를 확인한 다음 **Duplicate tunnel**(터널 복제)을 선택합니다. 사용할 터널 지속 시간을 지정한 다음 새 터널을 생성합니다.

## 정리
<a name="tunnel-cleanup-quick"></a>
+ 

**터널 닫기**  
터널을 다 사용한 후에는 터널을 닫는 것이 좋습니다. 터널이 지정된 터널 지속 시간보다 더 오래 열려 있는 경우 터널이 닫힐 수도 있습니다. 터널이 닫힌 후에는 터널을 다시 열 수 없습니다. 닫힌 터널을 선택한 다음 **Duplicate tunnel**(터널 복제)을 선택하여 여전히 터널을 복제할 수 있습니다. 사용할 터널 지속 시간을 지정한 다음 새 터널을 생성합니다.
  +  AWS IoT 콘솔에서 개별 터널 또는 여러 터널을 닫으려면 [터널 허브](https://console.aws.amazon.com/iot/home#/tunnels)로 이동하여 닫을 터널을 선택한 다음 **Close tunnel**(터널 닫기)을 선택합니다.
  +  AWS IoT API 참조 API를 사용하여 개별 터널 또는 여러 터널을 닫으려면 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html) API를 사용합니다.

    ```
    aws iotsecuretunneling close-tunnel \ 
        --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
    ```
+ 

**터널 삭제**  
에서 터널을 영구적으로 삭제할 수 있습니다 AWS 계정.
**주의**  
삭제 작업은 영구적이며 취소할 수 없습니다.
  +  AWS IoT 콘솔에서 개별 터널 또는 여러 터널을 삭제하려면 [터널 허브](https://console.aws.amazon.com/iot/home#/tunnels)로 이동하여 삭제할 터널을 선택한 다음 **Delete tunnel**(터널 삭제)을 선택합니다.
  +  AWS IoT API 참조 API를 사용하여 개별 터널 또는 여러 터널을 삭제하려면 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html) API를 사용합니다. API를 사용하는 경우 `delete` 플래그를 `true`로 설정합니다.

    ```
    aws iotsecuretunneling close-tunnel \ 
        --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
        --delete true
    ```