SSH 지원

이 페이지에서는 gcloud CLI를 사용하여 SSH(또는 기타 모든 TCP 프로토콜)를 사용하여 로컬 머신에서 워크스테이션에 연결하는 방법을 설명합니다.

Cloud Workstations는 워크스테이션을 인터넷에 공개적으로 노출하지 않고 터널을 사용하여 로컬 머신의 포트와 워크스테이션의 포트 간에 TCP 트래픽을 전달합니다. 연결은 gcloud CLI의 사용자 인증 정보를 사용하여 인증되고 대상 워크스테이션의 IAM 정책에 따라 승인됩니다.

로컬 포트와 워크스테이션 사이에 TCP 터널이 설정되면 이를 사용하여 SSH 클라이언트, curl 또는 TCP를 사용하는 기타 애플리케이션에서 트래픽을 전달할 수 있습니다.

편의를 위해 Cloud Workstations는 TCP 터널을 설정하고 단일 gcloud CLI 명령어로 SSH 클라이언트를 실행하는 gcloud workstations ssh 명령어를 제공합니다.

다른 모든 사용 사례의 경우 gcloud workstations start-tcp-tunnel 명령어를 사용하여 TCP 터널을 설정하고 터널을 사용할 애플리케이션(예:curl)을 별도의 터널에서 실행합니다.

시작하기 전에

  1. 연결할 워크스테이션이 아직 없으면 워크스테이션을 설정합니다.

  2. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init

  3. 연결할 워크스테이션에 Cloud Workstations 사용자 IAM 역할이 있는지 확인합니다.

    IAM으로 이동

SSH를 사용하여 워크스테이션에 연결

워크스테이션에 보안 SSH 연결을 설정하려면 TCP 터널을 시작하고 SSH 클라이언트를 실행하는 gcloud workstations ssh 명령어를 사용합니다.

명령어를 복사-붙여넣기 버퍼에 복사하려면 코드 샘플 복사를 클릭한 다음 명령어를 로컬 터미널 창에 붙여넣습니다.

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME  \
    --port=WORKSTATION_PORT  \
    --local-host-port=localhost:LOCAL_PORT  \
    WORKSTATION_NAME

다음 값을 바꿉니다.

  • PROJECT_ID: 워크스테이션이 포함된 프로젝트의 Google Cloud 프로젝트 ID입니다. 생략하면 현재 프로젝트가 사용됩니다.

  • REGION: 워크스테이션 클러스터가 있는 리전입니다(예: us-central1).

  • CLUSTER_NAME: 워크스테이션이 포함된 워크스테이션 클러스터의 이름입니다.

  • CONFIG_NAME: 이 워크스테이션이 포함된 워크스테이션 구성의 이름입니다.

  • WORKSTATION_PORT (선택사항): 트래픽을 전송할 워크스테이션의 포트입니다. 생략할 경우 트래픽은 포트 22로 전송됩니다. 사전 구성된 모든 Cloud Workstations 이미지에는 워크스테이션 포트 22에서 실행되는 SSH 서버가 포함되어 있습니다.

  • LOCAL_PORT (선택사항): 트래픽을 전송할 localhost 포트입니다. 유효한 포트 번호는 1024~65535입니다. --local-host-port 플래그를 생략하거나 포트 0을 지정하면 사용되지 않는 포트가 자동으로 선택됩니다.

  • WORKSTATION_NAME: 워크스테이션의 이름입니다.

선택사항: 플래그와 위치를 기본 ssh 구현에 전달하려면 명령어에 이중 대시(--) 뒤에 추가합니다.

TCP 터널을 사용하여 임의의 TCP 트래픽을 워크스테이션에 전달

ssh 이외의 TCP 애플리케이션을 사용하여 워크스테이션에 연결하려면 gcloud workstations start-tcp-tunnel 명령어를 사용합니다.

  1. 다음 gcloud CLI 명령어를 실행하여 인증된 TCP 터널을 만듭니다.

    명령어를 복사-붙여넣기 버퍼에 복사하려면 코드 샘플 복사를 클릭한 다음 명령어를 로컬 터미널 창에 붙여넣습니다.

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        WORKSTATION_PORT
    

    다음 값을 바꿉니다.

    • PROJECT_ID: 워크스테이션이 포함된 프로젝트의 Google Cloud 프로젝트 ID입니다. 생략하면 현재 프로젝트가 사용됩니다.

    • REGION: 워크스테이션 클러스터가 있는 리전입니다(예: us-central1).

    • CLUSTER_NAME: 워크스테이션이 포함된 워크스테이션 클러스터의 이름입니다.

    • CONFIG_NAME: 이 워크스테이션이 포함된 워크스테이션 구성의 이름입니다.

    • LOCAL_PORT (선택사항): 트래픽을 전송할 localhost 포트입니다. 유효한 포트 번호는 1024~65535입니다. --local-host-port 플래그를 생략하거나 포트 0을 지정하면 사용되지 않는 포트가 자동으로 선택됩니다.

    • WORKSTATION_NAME: 워크스테이션의 이름입니다.

    • WORKSTATION_PORT: 트래픽을 전송할 워크스테이션 포트입니다. 사전 구성된 Cloud Workstations 이미지에는 워크스테이션 포트 22에서 실행되는 SSH 서버가 포함되어 있습니다.

  2. gcloud CLI 명령어는 워크스테이션에 대한 연결 테스트를 수행하고 터널을 연 다음 포트 번호를 표시합니다.

    Listening on port [LOCAL_PORT].
    

    localhost:LOCAL_PORT로 전송되는 모든 트래픽은 워크스테이션으로 전달됩니다. 포트는 로컬 컴퓨터에서 실행 중인 애플리케이션에서만 액세스할 수 있습니다.

  3. gcloud CLI를 실행 중인 상태로 두고 다른 터미널을 열어 워크스테이션에 연결되는 애플리케이션을 실행합니다.

    예를 들어 포트 WORKSTATION_PORT를 제공하는 워크스테이션에서 서버를 실행 중이고 이전 단계에서 로컬 포트 LOCAL_PORT와 워크스테이션 포트 WORKSTATION_PORT 사이에 트래픽을 전달하는 TCP 터널을 만든 경우, 로컬 머신에서 curl을 실행하여 워크스테이션의 서버에 연결할 수 있습니다.

    curl localhost:LOCAL_PORT
    Hello, world!
    
  4. 완료되었으면 TCP 터널을 시작한 터미널로 돌아가고 Control+C를 눌러 gcloud CLI를 중단합니다.

다른 포트에서 SSH 서버 사용

커스텀 컨테이너 이미지는 모든 포트에서 SSH 서버를 사용할 수도 있습니다. gcloud CLI 터널의 연결을 지원하려면 비밀번호 인증을 허용하고 타겟 사용자를 빈 비밀번호로 설정하도록 커스텀 SSH 서버를 구성해야 합니다. Cloud Workstations는 Cloud IAM을 사용하여 승인된 트래픽만 SSH 서버로 전송되도록 합니다.

다음 단계