브라우저에서 SSH를 통해 연결

브라우저에서 SSH를 통해 연결 창을 사용하면 SSH를 사용하여 Google Cloud Console 내에서 Compute Engine 가상 머신(VM) 인스턴스에 연결할 수 있습니다. 이 기능은 웹브라우저 확장 프로그램이나 추가 소프트웨어를 설치하지 않아도 사용할 수 있습니다. 브라우저에서 SSH를 통해 연결하는 기능은 인스턴스에 연결하는 다른 방법을 대체하는 기능입니다.

Linux VM 인스턴스에 연결

Compute Engine은 사용자가 브라우저에서 Linux 인스턴스에 연결할 때마다 자동으로 사용자의 SSH 키를 관리하며, 필요하면 SSH 키 쌍을 만들어 적용합니다. 브라우저에서 연결하는 데 사용되는 SSH 키는 사용자가 관리할 수 없습니다. 대신 브라우저에서 연결하기 위한 사용자 액세스 권한은 Cloud Identity and Access Management 역할을 통해 제어할 수 있습니다. 프로젝트의 구성원 및 IAM 역할은 Google Cloud Console의 IAM 페이지에서 볼 수 있습니다.

IAM 페이지로 이동

브라우저를 통해 연결하려는 사용자는 Compute 인스턴스 관리자이자 프로젝트 구성원이어야 합니다. 또한 인스턴스가 서비스 계정으로 실행될 수 있는 경우에는 서비스 계정 사용자이기도 해야 합니다. 브라우저를 통해 연결할 수 있는 액세스 권한이 없는 사용자는 프로젝트 소유자에게 본인을 프로젝트에 추가하고 액세스 권한을 부여해 달라고 요청하세요.

액세스 권한이 부여되면 Cloud Console의 웹브라우저에서 직접 Linux 인스턴스에 연결합니다.

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 가상 머신 인스턴스 목록에서 연결할 인스턴스 행의 SSH를 클릭합니다.

    인스턴스 이름 옆에 있는 SSH 버튼

또는 인스턴스 이름을 클릭하고 인스턴스 세부정보 페이지에서 SSH를 클릭하여 인스턴스에 대한 SSH 연결을 열 수 있습니다.

이제 터미널을 사용하여 Linux 인스턴스에서 명령어를 실행할 수 있습니다. 작업을 마치면 exit 명령어를 사용해 인스턴스의 연결을 해제합니다.

지원되는 환경

브라우저에서 SSH를 통해 연결하는 기능은 다음을 지원합니다.

  • 웹브라우저
    • Google Chrome 최신 버전
    • Firefox
    • Microsoft Edge
    • Microsoft Internet Explorer 11 이상
    • Safari 8 이상 Safari의 시크릿 브라우저 모드는 지원되지 않습니다.
  • 가상 머신 구성
    • Google Cloud에서 기본적으로 제공되는 모든 Linux VM 이미지

알려진 문제

  • 느린 SSH 키 전송 시간: 기본적으로 브라우저의 SSH는 새 SSH 키를 모든 새 연결에 있는 프로젝트 메타데이터에 푸시합니다. VM이 많은 프로젝트의 경우 속도가 느려질 수 있습니다. 키 전송 속도를 높이려면 프로젝트 전체 SSH 키를 차단하거나 OS 로그인을 사용 설정하는 것을 고려하세요.

  • 시작 지연 시간 브라우저에서 SSH를 통해 연결 시 연결 시간은 현재 5~30초입니다. 게스트 환경 최신 버전은 이보다 빠른 연결을 지원합니다.

  • 새 VM 인스턴스를 바로 사용할 수 없음: SSH를 설정하기 전에 새 인스턴스를 부팅하는 데 다소 시간이 걸립니다. 새 인스턴스에 연결할 수 없으면 몇 분 후에 다시 시도하세요.

  • 간헐적 연결 해제: 현재는 연결 수명에 대한 특정 SLA가 제공되지 않습니다. 터미널 창을 장시간 열어 두려면 tmuxscreen 같은 터미널 멀티플렉서를 사용하세요.

  • 외부 IP 주소가 없는 인스턴스에 연결: Compute Engine 인스턴스에 내부 IP 주소만 있으면 다음 옵션 중 하나를 사용하여 연결합니다.

    • IAP(Identity-Aware Proxy) TCP 전달을 구성하여 브라우저에서 SSH를 통해 연결. 외부 IP가 없는 인스턴스가 IAP를 통한 TCP 터널링을 허용하도록 구성된 경우 브라우저에서 SSH를 사용하여 인스턴스에 연결할 수도 있습니다.

    • 배스천 호스트를 사용하여 브라우저에서 SSH를 통해 연결. 이 옵션을 사용하려면 대상 인스턴스와 배스천 인스턴스가 모두 동일한 VPC 네트워크 또는 연결된 VPC 네트워크에 있어야 합니다.

      배스천 호스트를 사용하여 브라우저에서 SSH를 통해 연결하려면 다음 단계를 완료하세요.

      1. 브라우저에서 SSH를 사용하여 외부 IP 주소가 있는 배스천 인스턴스에 연결합니다. 이 단계에서는 임시 SSH 키 쌍을 생성하고 배스천 호스트의 프로젝트 또는 인스턴스 메타데이터에 공개 키를 업로드합니다.
      2. 배스천 인스턴스에서 내부 IP 주소만 있는 대상 인스턴스에 연결합니다. 배스천 인스턴스에서 대상 인스턴스에 연결하려면 internal-ip를 대상 인스턴스의 내부 IP 주소로 바꾸어 다음 명령어를 실행합니다.

        ssh -A internal-ip

        첫 번째 단계에서 생성된 임시 키를 사용하려면 먼저 배스천 인스턴스에 연결한 후 약 2분 내에 이 명령어를 실행해야 합니다.

  • Ctrl+W 사용 시 창이 닫힘: Ctrl+W, Ctrl+F4, Ctrl+Tab 등 브라우저 단축키로 작동하는 키 조합이 SSH 클라이언트에서 대상 시스템으로 전달되지 않습니다. 이러한 단축키와 그 밖의 단축키를 보내려면 창의 오른쪽 상단에 있는 키보드 아이콘을 클릭하세요. Chrome 브라우저를 사용한다면 'Google Cloud Platform용 SSH' 확장 프로그램을 설치하세요. 이 확장 프로그램을 사용하면 Ctrl+W처럼 브라우저에 일반적으로 예약된 단축키에 직접 액세스할 수 있어 브라우저에서 SSH를 통해 연결하는 기능과 Cloud Shell의 Console 환경이 개선됩니다.

  • 대용량 파일의 경우 때때로 파일 전송이 느려질 수 있습니다. 대용량 파일을 전송하려면 gcloud compute scp 명령어를 사용하는 것이 좋습니다.

'포트 22에 연결할 수 없습니다' 오류 메시지 처리

이 오류는 다음과 같은 경우에 나타날 수 있습니다.

  • 인스턴스가 부팅 중인데 sshd가 아직 실행되고 있지 않습니다. 다시 시도하기 전에 인스턴스의 부팅이 완료되었는지 확인하세요.

  • 인스턴스가 sshd를 실행하고 있지 않습니다. sshd는 기본적으로 표준 Compute Engine 이미지를 사용하여 생성된 인스턴스에서 실행됩니다. 수동으로 sshd를 사용 중지하거나 이 서비스를 실행하지 않는 커스텀 이미지를 구성한 경우 브라우저에서 SSH를 통해 연결하는 기능이 작동하지 않습니다.

  • sshd가 연결 대상 포트가 아닌 다른 포트에서 리슨 중입니다. 기본적으로 브라우저에서 SSH를 통해 연결하는 기능은 포트 22에서 인스턴스에 연결합니다. 커스텀 포트에서 sshd를 실행하는 경우에는 SSH 버튼의 드롭다운 목록에서 커스텀 포트의 브라우저 창에서 열기 항목을 사용하여 해당 포트에 연결할 수 있습니다.

  • 포트에서 SSH 액세스를 허용하는 방화벽 규칙이 없습니다. 포트 22의 SSH 액세스는 기본적으로 모든 Compute Engine 인스턴스에 사용 설정되어 있습니다. 액세스를 사용 중지한 경우에는 브라우저에서 SSH를 통해 연결하는 기능이 작동하지 않습니다. 포트 22가 아닌 다른 포트에서 sshd를 실행하려면 커스텀 방화벽 규칙을 사용하여 해당 포트에 대한 액세스를 사용 설정해야 합니다.

  • SSH 액세스를 허용하는 방화벽 규칙이 사용 설정되었지만 Cloud Console 서비스로부터의 연결을 허용하도록 구성되지 않았습니다. 브라우저 기반 SSH 세션의 소스 IP 주소는 Cloud Console이 동적으로 할당하며 세션마다 다를 수 있습니다. 이 기능이 작동하기 위해서는 공개 SPF 레코드를 사용해서 검색할 수 있는 Google의 IP 주소 범위나 모든 IP 주소에서의 연결을 허용해야 합니다.

  • 인스턴스가 종료되었습니다. 인스턴스가 실행 중인지 확인하세요. 비정상 인스턴스의 문제해결 방법에 대한 자세한 내용은 Compute Engine 사용에 대한 일반적인 팁을 참조하세요.

'연결할 수 없습니다. 다시 시도하는 중입니다' 오류 처리

  • 인스턴스가 게스트 환경을 실행하고 있지 않을 수 있습니다. 게스트 환경이 설치되어 실행 중인지 확인하세요.

  • 인스턴스의 부팅 디스크에 여유 공간이 부족합니다. 연결이 설정되면 게스트 환경은 현재 세션에 사용되는 공개 SSH 키로 ~/.ssh/authorized_keys 파일을 업데이트합니다. 디스크의 여유 공간이 부족하면 업데이트가 실패합니다. 디스크 공간 문제를 파악하려면 인스턴스의 직렬 콘솔 출력을 확인하고 '남은 공간 없음' 오류를 찾습니다. 다음은 디스크 공간 문제 해결에 사용할 수 있는 몇 가지 방법입니다.

    • 인스턴스 부팅 영구 디스크의 크기를 조절해 디스크 크기를 늘립니다. 인스턴스에서 사용되는 운영체제 이미지가 자동 크기 조절을 지원한다면 이 방법이 가장 간편합니다. 인스턴스가 다시 시작되면 새 크기에 맞게 운영체제에서 루트 파티션의 크기가 자동으로 조절되기 때문입니다.
    • 어떤 파일이 디스크 공간을 사용하고 있는지 안다면 필요 없는 파일을 삭제해 인스턴스를 시작할 공간을 확보하는 시작 스크립트를 만듭니다. 이 스크립트를 실행해서 파일을 정리할 수 있도록 인스턴스를 다시 시작하세요. 올바른 명령어를 사용하고 올바른 파일을 삭제해야 합니다. 인스턴스 시작 후 SSH를 통해 인스턴스에 연결할 수 있다면 파일을 계속 삭제하지 않도록 startup-script 메타데이터 항목을 다시 설정하세요.
    • 인스턴스의 디스크에 액세스하는 방법은 Compute Engine 사용에 대한 일반적인 팁을 참조하세요.
  • $HOME, $HOME/.ssh 또는 $HOME/.ssh/authorized_keys에 대한 권한 또는 소유권이 잘못되었을 수 있습니다.

    • 소유권 게스트 환경은 연결하는 사용자의 $HOME/.ssh/authorized_keys 파일에 공개 SSH 키를 저장할 수 있어야 합니다. $HOME 디렉터리, $HOME/.ssh 디렉터리, authorized_keys 파일의 소유자는 연결하는 사용자와 동일해야 합니다.
    • 권한 사용자 이름을 변경하여 다른 사용자로 연결을 시도하고, 연결할 수 없는 사용자의 권한 문제를 해결하세요.

      디렉터리/파일 필수 Unix 권한
      $HOME 디렉터리 0755 또는
      0700
      $HOME/.ssh 디렉터리 0700
      authorized_keys 파일 0600

복사/붙여넣기

브라우저와 플랫폼에서 지원되는 단축키(Windows 및 Linux의 경우 Ctrl+C/Ctrl+V, macOS의 경우 Cmd+C/Cmd+V, Chrome OS의 경우 Ctrl+Shift+V)로 텍스트를 복사해서 붙여넣을 수 있습니다. 일반적으로 이 명령어는 대부분의 구성에서 작동하지만 구성에 따라 다른 결과가 나타날 수 있습니다.

파일 전송

브라우저에서 SSH를 통해 연결 창을 사용하여 인스턴스에 대한 SSH 연결을 설정할 수 있으면 이 연결을 사용해서 해당 인스턴스로 파일을 전송할 수 있습니다.

자세한 내용은 브라우저에서 SSH를 통해 파일 전송을 참조하세요.

스크롤

마우스 휠이나 트랙패드로 터미널을 스크롤할 수 있습니다. 또한 Windows와 Linux에서는 Ctrl+Shift+PageUp/Ctrl+Shift+PageDn 단축키로, macOS에서는 Fn+Shift+Up/Fn+Shift+Down 단축키로 터미널을 스크롤할 수도 있습니다.

로그인 사용자 이름

기본 사용자 이름

기본적으로 SSH 세션의 사용자 이름은 계정에 로그인한 이메일 주소에서 생성되며 도메인 정보는 생략됩니다. 예를 들어 이메일이 user@gmail.com이면 해당 사용자 이름은 user입니다.

OS 로그인이 사용 설정된 기본 사용자 이름

OS 로그인이 사용 설정되어 있고 G Suite 관리자가 사용자 이름을 설정하지 않은 경우 더 긴 버전의 사용자 이름이 기본적으로 설정됩니다. 이 사용자 이름은 도메인 정보를 포함합니다. 예를 들어 이메일이 user@gmail.com이면 해당 사용자 이름은 user_gmail_com입니다. OS 로그인 동작에 대한 자세한 내용은 예상되는 로그인 동작을 참조하세요.

기본 사용자 이름 변경

다음 안내에 따라 SSH 창에서 사용자 이름을 변경할 수 있습니다.

  1. VM 인스턴스에 연결합니다.
  2. SSH 창의 오른쪽 상단에서 설정 아이콘 설정 아이콘을 클릭합니다.
  3. Linux 사용자 이름 변경을 선택합니다. Linux 시스템의 로그인 이름은 32자(영문)로 제한되므로, 기본 사용자 이름과 구성한 사용자 이름은 이 제한을 초과하지 않도록 끝이 잘립니다.
  4. (선택사항) 데이터를 새 홈 디렉터리에 복사합니다. 각각의 새 사용자 이름은 서로 다른 Unix 사용자이며 따라서 홈 디렉터리를 사용하여 데이터를 저장했으면 cp 명령어를 사용하여 데이터를 새 디렉터리로 복사할 수 있습니다. 예를 들어 사용자 이름을 user_gmail_com에서 user로 변경하려면 다음 명령어를 실행합니다.

    # This will overwrite files in the target directory, so be careful.
    $ sudo cp -r /home/user_gmail_com/. /home/user
    
    $ sudo chown -R user:user /home/user
    

사용자가 제공한 비공개 SSH 키 사용

SSH 버튼 드롭다운 목록의 제공된 비공개 SSH 키를 사용하여 브라우저 창에서 열기 항목을 선택하여 사용자가 제공한 비공개 SSH 키와 연결할 수 있습니다.

사용자가 제공한 SSH 키로 인스턴스에 연결하려면 다음 필수 단계를 완료하세요.

  1. 프로젝트 또는 개별 인스턴스에 OS 로그인 기능을 사용 설정합니다.
  2. 사용자의 OS 로그인 프로필로 공개 SSH 키를 구성합니다. 요청에 프로젝트 ID를 포함하여 프로필이 올바르게 구성되었는지 확인합니다.