Google Compute Engine 虛擬機 SSH 連線

測試環境為

  • SSH Client: Mac OS
  • SSH Server: Google Cloud Platform Compute Engine 虛擬機 – Ubuntu 16.04

一開始要連線到 VM 可以在 執行個體詳細資料 / 遠端存取 / SSH 在瀏覽器視窗中開啟.

如果要使用一般 SSH 工具 (如 Linux or MAC – SSH 指令) 時需要設定金鑰.

SSH 金鑰的安全驗證

Google Compute Engine 採用比較嚴格的金鑰安全驗證機制 (使用者不需輸入密碼即可登入).
SSH 採用 RSA , DSA 認證步驟如下:

  1. SSH Server (Ubuntu) 會把他的公開金鑰提供給 SSH Client (MAC) 來作加密使用.
  2. SSH 伺服器會檢查 SSH Client 指定的使用者是否有儲存公開金鑰在 $HOME/.ssh/authorized_key 檔案中.
    • 沒有 – ( Google Compute Engine 無法使用,只能基於金鑰的安全驗證) 基於密碼的安全驗證,SSH Server 會提示使用者輸入使用者密碼.
    • – 基於金鑰的安全驗證.
      1. SSH Server 會請求 SSH Client 作身份驗證.
      2. SSH Client 會檢查自己的 $HOME/.ssh 目錄下,看看你是否擁有私鑰 (名稱 id_dsa)
      3. 如果私鑰存在,SSH 會提示你輸入此私鑰的通行證 passphrase ,接下來會使用這私鑰來建立簽章並傳給 SSH Server.
      4. 如果 SSH Server 用 SSH Client 公鑰驗證,驗證成功就不需要使用者輸入密碼了.

關於詳細 SSH 身份驗證請參考 http://benjr.tw/301

SSH Client – Mac OS

SSH Client 產生(公/私)金鑰,passphrase 主要是保護私鑰 (你需要一串密碼來解開私鑰),也可以不設.

Ben-MacBook-Air:~ Ben$ ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C ben
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/Ben/.ssh/my-ssh-key.
Your public key has been saved in /Users/Ben/.ssh/my-ssh-key.pub.
The key fingerprint is:
SHA256:12345678901234567892Lu123456789012345678902k ben
The key's randomart image is:
+---[RSA 2048]----+
|    fdg32f      *|
|    ew         .=|
| sdf     we  df.+|
|     xcv      df+|
|        S   . o+*|
|  sf       . . . |
|        o + o..oB|
|wer     ..er+oE. |
|     .=+wedg*+   |
+----[SHA256]-----+

-C 使用者必須同 Ubuntu SSH Server 要登入的使用者名稱.
SSH Client 產生的私鑰留下來,公鑰要交給 SSH Server 保存.

SSH Server -Ubuntu

SSH Client (Mac) 產生的公鑰要交給 SSH Server (Ubuntu) 保存,在專案的中繼資料頁面 / SSH 金鑰 / 編輯 / 新增項目 / 輸入完整金鑰資料 (公開金鑰 Public Key).檢視一下 ./.ssh/authorized_keys 就可以看到剛剛輸入的公開金鑰 (Public Key)

ben@ubuntu-xenial-1:~$ cat ~/.ssh/authorized_keys
# Added by Google
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ben

SSH Client – Mac OS

可以看到不需要輸入密碼,但剛剛我有設定 passphrase 主要是用來保護私鑰的密碼.

Ben-MacBook-Air:~ Ben$ ssh -i .ssh/my-ssh-key ben@ben.tw
Enter passphrase for key '.ssh/my-ssh-key': 
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1012-gcp x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


*** System restart required ***
Last login: Fri Apr 27 01:36:37 2018 from 173.194.93.99
ben@ubuntu-xenial-1:~$ exit
logout
Connection to ben.tw closed.

其他連線方式請參考 – https://cloud.google.com/compute/docs/instances/connecting-to-instance

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料