透過瀏覽器使用 SSH

透過瀏覽器建立 SSH 連線可讓您使用 SSH 直接從 Google Cloud Platform Console 中連接至 Compute Engine 虛擬機器 (VM) 執行個體。而不需安裝網路瀏覽器擴充功能或其他軟體。「透過瀏覽器建立 SSH 連線」功能可做為與執行個體連線的其他方法替代方案。

連線至 Linux VM 執行個體

每當您透過瀏覽器連線至 Linux 執行個體時,Compute Engine 都會為您管理 SSH 金鑰組,並視需要建立及套用 SSH 金鑰組。您無法管理透過瀏覽器連線時使用的 SSH 金鑰組,不過可以藉由 Cloud Identity and Access Management 角色管理透過瀏覽器連線的使用者存取權。您可以在 Google Cloud Platform Console 的 IAM 頁面中檢視專案的成員和 IAM 角色。

前往「IAM」(身分與存取權管理) 頁面

如要透過瀏覽器連線,您必須是具備 Compute 執行個體管理員角色權限的專案成員。 如果您的執行個體可以做為 服務帳戶 執行,那麼您也必須具備服務帳戶使用者角色權限。如果您沒有透過瀏覽器連線的存取權,請要求專案擁有者將您新增至專案並授予您存取權

取得存取權限後,直接從 GCP Console 中的網路瀏覽器連接到 Linux 執行個體:

  1. 前往 GCP 主控台的「VM Instances」(VM 執行個體) 頁面。

    前往「VM Instances」(VM 執行個體) 頁面

  2. 在虛擬機器執行個體清單中,找到您要建立連線的執行個體,然後在該列中按一下 [SSH]

此外,您也可以在「執行個體詳細資料」頁面中依序點選執行個體名稱和 [SSH],藉此開啟執行個體的 SSH 連線。

您現在可以在 Linux 執行個體使用終端機執行指令。完成後,請使用 exit 指令中斷與執行個體的連線。

支援的環境

「透過瀏覽器建立 SSH 連線」功能支援下列環境:

  • 網路瀏覽器。最新版 Google Chrome、Firefox、Microsoft Edge,以及 Microsoft Internet Explorer 11 以上版本和 Safari 8 以上版本。請注意,這項功能不支援 Safari 的私密瀏覽模式。
  • 虛擬機器設定。 Google Cloud Platform (GCP) 中內建可供使用的所有 Linux VM 映像檔。

已知問題

  • 啟動延遲。目前使用「透過瀏覽器建立 SSH 連線」功能的連線時間為 5 至 30 秒。目前的訪客環境版本支援更快的連線速度。

  • 無法立即使用新的 VM 執行個體。在系統建立 SSH 連線之前,新的執行個體需要一些時間才能啟動。如果您無法連線至新的執行個體,請等候幾分鐘後再試。

  • 間歇性斷線。目前,我們並未針對連線生命週期提供特定的服務水準協議。如要讓終端機視窗持續開啟一段時間,請使用 tmuxscreen 等終端機數據多工器。

  • 連線至沒有外部 IP 位址的執行個體。如果您的 Compute Engine 執行個體僅具有內部 IP 位址,請使用下列其中一個選項進行連線:

    • 利用已設定的 Cloud Identity-Aware Proxy TCP 轉送功能,透過瀏覽器建立 SSH 連線。如果將沒有外部 IP 的執行個體設定為允許透過 Cloud IAP 建立 TCP 通道,您也可以使用「透過瀏覽器建立 SSH 連線」功能連線至該執行個體。

    • 透過瀏覽器建立與防禦主機的 SSH 連線。如要使用此選項,目標和防禦執行個體必須位於同一個虛擬私人雲端網路中或已連線的虛擬私人雲端網路中。

      如要使用「透過瀏覽器建立 SSH 連線」功能與防禦主機連線,請完成以下步驟:

      1. 使用「透過瀏覽器建立 SSH 連線」功能連線至具有外部 IP 位址的防禦執行個體。此步驟會產生臨時的安全殼層 (SSH) 金鑰組,並將公開金鑰上傳至防禦主機的專案或執行個體中繼資料。
      2. 從防禦執行個體連線至僅具有內部 IP 位址的目標執行個體。如要從防禦執行個體連線至目標執行個體,請執行以下指令:

        ssh -A [INTERNAL_IP]
        

        其中 [INTERNAL_IP] 是目標執行個體的內部 IP 位址。您必須在連線至防禦執行個體後大約兩分鐘內執行此指令,才能使用在第一個步驟中產生的臨時金鑰。

  • Ctrl+W 關閉視窗。Ctrl+WCtrl+F4Ctrl+Tab 以及其他可做為瀏覽器鍵盤快速鍵的按鍵組合,無法經由 SSH 用戶端傳送至目標系統。如要傳送這些或其他快速鍵,請點選視窗右上角的鍵盤圖示。如果您是使用 Google Chrome 瀏覽器,則可安裝「SSH for Google Cloud Platform」擴充功能。這個擴充功能可讓您直接使用常見的瀏覽器鍵盤快速鍵 (例如 Ctrl+W),藉此針對「透過瀏覽器建立 SSH 連線」功能和 Cloud Shell 改善主控台的使用體驗。

  • 大型檔案的檔案傳輸有時會較緩慢,建議您使用 gcloud compute scp 來傳輸大型檔案。

處理「無法經由通訊埠 22 進行連線」錯誤訊息

以下情況可能會導致您看到這個錯誤訊息:

  • 執行個體正在啟動,但 sshd 並未執行。請確認執行個體已完成啟動程序,然後再試一次。

  • 執行個體未執行 sshd。根據預設,sshd 會在透過標準 Compute Engine 映像檔建立的執行個體上執行。如果您已手動停用 sshd 或已設定未執行此服務的自訂映像檔,則「透過瀏覽器建立 SSH 連線」功能不會運作。

  • sshd 正在聽取的通訊埠不是您正在連線的通訊埠。 根據預設,「透過瀏覽器建立 SSH 連線」功能會經由通訊通訊埠 22 連線至執行個體。 如果您在自訂通訊埠上執行 sshd,您可以使用 SSH 按鈕下拉式清單裡的「Open in browser window on custom port」(在自訂通訊埠中開啟瀏覽器視窗) 項目,連結到該通訊埠。

  • 防火牆規則未允許 SSH 在通訊埠上進行存取。根據預設,SSH 對通訊埠 22 的存取權會針對所有 Compute Engine 執行個體啟用。如果您已停用存取權,則「透過瀏覽器建立 SSH 連線」功能不會運作。如果您不是在通訊埠 22 上執行 sshd,則必須使用自訂防火牆規則來啟用對該通訊埠的存取權。

  • 已啟用允許 SSH 存取權的防火牆規則,不過並未設定允許來自 GCP Console 服務的連線。 GCP Console 會為透過瀏覽器執行的 SSH 工作階段動態分配來源 IP 位址,每次工作階段的位址都可能有所不同。為了讓這個功能順利運作,您必須允許來自任何 IP 位址或 Google IP 位址範圍的連線,您可以使用公開的 SPF 記錄擷取 Google IP 位址範圍。

  • 執行個體已關閉。請確認執行個體已上線且正在運作。如要瞭解如何針對健康狀態不佳的執行個體進行疑難排解,請參閱使用 Compute Engine 的一般提示

處理「無法連線,重試中...」錯誤

  • 執行個體可能未執行訪客環境驗證是否已安裝並執行訪客環境。

  • 執行個體的開機磁碟沒有可用空間。建立連線後,訪客環境會以用於目前工作階段的公開 SSH 金鑰來更新 ~/.ssh/authorized_keys 檔案。如果磁碟沒有可用空間,更新作業就會失敗。 如要確定磁碟空間的問題,請檢查執行個體的序列控制台輸出內容,並尋找是否有「空間不足」的錯誤。以下是一些可用於解決磁碟空間問題的方法:

    • 針對執行個體的開機永久磁碟調整大小,以增加其空間。如果執行個體使用的作業系統映像檔支援自動調整大小功能,這項功能就是您解決問題的最佳選項,因為作業系統會自動調整根磁碟分區的大小,藉此滿足執行個體重新啟動後對空間大小的新需求。
    • 如果您知道哪些檔案佔用了磁碟空間,請建立開機指令碼刪除不必要的檔案,藉此釋出空間供執行個體啟動。 您必須重新啟動執行個體,指令碼才能執行並清理檔案。 請仔細檢查您使用的指令和刪除的檔案是否正確。 執行個體啟動後,您可以透過 SSH 連線至執行個體,將 startup-script 中繼資料項目改回原本的設定,以免繼續刪除檔案。
    • 如要瞭解如何存取執行個體的磁碟,請參閱使用 Compute Engine 的一般提示
  • 對於 $HOME$HOME/.ssh$HOME/.ssh/authorized_keys 的權限或擁有權有誤。訪客環境必須能夠將公開 SSH 金鑰儲存在連線使用者的 $HOME/.ssh/authorized_keys 檔案中。將 $HOME 目錄的 Unix 權限設定為 07550700。將 $HOME/.ssh 目錄的 Unix 權限設定為 0700。將 authorized_keys 檔案的 Unix 權限設定為 0600。確認 $HOME 目錄、$HOME/.ssh 目錄和 authorized_keys 檔案的擁有者與連線使用者是相同的。您可以嘗試變更使用者名稱以其他使用者的身分進行連線,然後為無法連線的使用者修正任何權限問題。

複製/貼上

您可以使用瀏覽器和平台支援的鍵盤快速鍵來複製及貼上文字 (在 Windows 和 Linux 上為 Ctrl+C/Ctrl+V,在 macOS 上為 Cmd+C/Cmd+V,在 Chrome 作業系統上為 Ctrl+Shift+V)。一般來說,這些指令適用於大部分設定,但您的設定可能會呈現不同的結果。

轉移檔案

如果您可以使用「SSH from the Browser」(透過瀏覽器建立 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 視窗右上角的「Setting」(設定) 圖示 「設定」圖示
  3. 選取 [Change Linux Username] (變更 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
    
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件