터널을 열고 브라우저 기반 SSH를 사용하여 원격 디바이스에 액세스 - AWS IoT Core

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

터널을 열고 브라우저 기반 SSH를 사용하여 원격 디바이스에 액세스

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

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

빠른 설정 방법의 경우 SSH를 대상 서비스로 사용하여 원격 디바이스에 액세스해야 합니다. 다양한 설정 방법에 대한 자세한 내용은 터널 설정 방법 섹션을 참조하세요.

빠른 설정 방법의 사전 조건

  • 원격 디바이스 뒤에 있는 방화벽에서 포트 443의 아웃바운드 트래픽을 허용해야 합니다. 생성하는 터널은 이 포트를 사용하여 원격 디바이스에 연결됩니다.

  • 장치 게이트웨이에 연결되고 MQTT 주제 구독으로 구성된 원격 장치에서 IoT AWS IoT 장치 에이전트 (참조IoT 에이전트 코드 조각) 가 실행되고 있습니다. 자세한 내용은 장치 게이트웨이에 장치 연결을 참조하십시오. AWS IoT

  • 원격 디바이스에서 실행 중인 SSH 데몬이 있어야 합니다.

터널 열기

AWS Management Console, AWS IoT API 참조 또는 를 사용하여 보안 터널을 열 수 AWS CLI있습니다. 선택적으로 대상 이름을 구성할 수 있지만 이 자습서에서는 필요하지 않습니다. 대상을 구성하면 보안 터널링이 MQTT를 사용하여 원격 디바이스에 액세스 토큰을 자동으로 전달합니다. 자세한 정보는 AWS IoT 콘솔의 터널 생성 메서드을 참조하세요.

콘솔을 사용하여 터널을 열려면
  1. AWS IoT 콘솔의 터널 허브로 이동하고 Create tunnel(터널 생성)을 선택합니다.

    AWS IoT 콘솔에는 터널을 생성, 종료 또는 삭제할 수 있는 옵션이 포함된 빈 터널 목록이 표시됩니다.
  2. 이 자습서에서는 터널 생성 방법으로 Quick setup(빠른 설정)을 선택한 후 Next(다음)를 선택합니다.

    참고

    생성한 사물의 세부 정보 페이지에서 보안 터널을 만드는 경우 새 터널을 생성할지 아니면 기존 터널을 사용할지를 선택할 수 있습니다. 자세한 정보는 원격 디바이스에 대한 터널을 열고 브라우저 기반 SSH 사용을 참조하세요.

    SSH 또는 수동 설정을 사용한 빠른 설정 옵션이 포함된 설치 방법 섹션, 프록시 및 액세스 토큰을 자동으로 구성하는 빠른 설정에 대해 설명합니다.
  3. 터널 구성 세부 정보를 검토하고 확인합니다. 터널을 생성하려면 Confirm and create(확인 및 생성)를 선택합니다. 이러한 세부 정보를 편집하려면 Previous(이전)를 선택하여 이전 페이지로 돌아간 다음 터널을 확인하고 생성합니다.

    참고

    빠른 설정을 사용하는 경우 서비스 이름을 편집할 수 없습니다. SSHService(서비스)로 사용해야 합니다.

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

    이 자습서에서는 소스 또는 대상 액세스 토큰을 다운로드할 필요가 없습니다. 이러한 토큰은 한 번만 사용하여 터널에 연결할 수 있습니다. 터널의 연결이 끊어지면 새 토큰을 생성하고 원격 디바이스로 전송하여 터널에 다시 연결할 수 있습니다. 자세한 정보는 터널 액세스 토큰 재전송을 참조하세요.

    보안 터널 연결을 만들기 위한 소스 및 대상 액세스 토큰과 필요한 경우 토큰 교체 및 재전송에 대한 지침을 보여주는 대화 상자입니다.
API를 사용하여 터널을 열려면

새 터널을 열려면 OpenTunnelAPI 작업을 사용할 수 있습니다.

참고

AWS IoT 콘솔에서만 빠른 설정 방법을 사용하여 터널을 생성할 수 있습니다. AWS IoT API 참조 API 또는 를 사용하는 AWS CLI경우 수동 설정 방법이 사용됩니다. 기존에 생성한 터널을 열고 빠른 설정을 사용하도록 터널의 설정 방법을 변경할 수 있습니다. 자세한 정보는 기존 터널을 열고 브라우저 기반 SSH 사용을 참조하세요.

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

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 사용

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

브라우저 기반 SSH를 사용하려면
  1. AWS IoT 콘솔의 터널 허브로 이동하고 생성한 터널을 선택하여 세부 정보를 봅니다.

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

  3. 사용자 이름과 암호를 제공하여 SSH 연결에 인증할지 여부를 선택하거나, 보다 안전한 인증을 위해 디바이스의 프라이빗 키를 사용할 수 있습니다. 프라이빗 키를 사용하여 인증하는 경우 PEM(PKCS #1, PKCS #8) 및 OpenSSH 형식의 RSA, DSA, ECDSA(nistp-*) 및 ED25519 키 유형을 사용할 수 있습니다.

    • 사용자 이름과 암호를 사용하여 연결하려면 Use password(암호 사용)를 선택합니다. 그런 다음 사용자 이름과 암호를 입력하고 브라우저 내 CLI를 사용할 수 있습니다.

    • 대상 디바이스의 프라이빗 키를 사용하여 연결하려면 Use private key(프라이빗 키 사용)를 선택합니다. 사용자 이름을 지정하고 디바이스의 프라이빗 키 파일을 업로드한 다음 Connect(연결)를 선택하여 브라우저 내 CLI 사용을 시작합니다.

      브라우저 CLI를 통해 개인 키로 연결하는 양식 대화 상자에는 사용자 이름 필드와 미리 선택된 개인 키 파일을 선택하거나 사용할 수 있는 옵션이 표시됩니다.

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

애플리케이션의 상태 및 환경설정을 관리하기 위한 React 후크를 보여주는 코드 스니펫입니다. JavaScript

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

브라우저 기반 SSH 사용 시 문제 해결

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

  • 명령줄 인터페이스 대신 오류가 표시됨

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

  • 프라이빗 키를 사용하여 인증할 때 터널 연결 해제 오류가 표시됨

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

  • 세션을 사용할 때 터널이 닫힘

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

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

정리

  • 터널 닫기

    터널을 다 사용한 후에는 터널을 닫는 것이 좋습니다. 터널이 지정된 터널 지속 시간보다 더 오래 열려 있는 경우 터널이 닫힐 수도 있습니다. 터널이 닫힌 후에는 터널을 다시 열 수 없습니다. 닫힌 터널을 선택한 다음 Duplicate tunnel(터널 복제)을 선택하여 여전히 터널을 복제할 수 있습니다. 사용할 터널 지속 시간을 지정한 다음 새 터널을 생성합니다.

    • AWS IoT 콘솔에서 개별 터널 또는 여러 터널을 닫으려면 터널 허브로 이동하여 닫을 터널을 선택한 다음 Close tunnel(터널 닫기)을 선택합니다.

    • AWS IoT API 참조 API를 사용하여 개별 터널 또는 여러 터널을 닫으려면 API를 사용하십시오. CloseTunnel

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • 터널 삭제

    터널을 내 터널에서 영구적으로 삭제할 수 있습니다 AWS 계정.

    주의

    삭제 작업은 영구적이며 취소할 수 없습니다.

    • AWS IoT 콘솔에서 개별 터널 또는 여러 터널을 삭제하려면 터널 허브로 이동하여 삭제할 터널을 선택한 다음 Delete tunnel(터널 삭제)을 선택합니다.

    • AWS IoT API 참조 API를 사용하여 개별 터널 또는 여러 터널을 삭제하려면 API를 사용하십시오. CloseTunnel API를 사용하는 경우 delete 플래그를 true로 설정합니다.

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