測試環境為
- 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 認證步驟如下:
- SSH Server (Ubuntu) 會把他的公開金鑰提供給 SSH Client (MAC) 來作加密使用.
- SSH 伺服器會檢查 SSH Client 指定的使用者是否有儲存公開金鑰在 $HOME/.ssh/authorized_key 檔案中.
- 沒有 – 基於密碼的安全驗證,SSH Server 會提示使用者輸入使用者密碼( Google Compute Engine 無法使用,只能基於金鑰的安全驗證) .
- 有 – 基於金鑰的安全驗證.
- SSH Server 會請求 SSH Client 作身份驗證.
- SSH Client 會檢查自己的 $HOME/.ssh 目錄下,看看你是否擁有私鑰 (名稱 id_dsa)
- 如果私鑰存在,SSH 會提示你輸入此私鑰的通行證 passphrase ,接下來會使用這私鑰來建立簽章並傳給 SSH Server.
- 如果 SSH Server 用 SSH Client 公鑰驗證,驗證成功就不需要使用者輸入密碼了.
Note: 如果使用其他家的虛擬機服務時要使用基於金鑰安全驗證機制可以自行設定 /etc/ssh/sshd_config ,並把 PasswordAuthentication 設定為 no ,並重啟 ssh 服務 # systemctl restart sshd 即可 (前提是須先完成以下的金鑰設定).
關於詳細 SSH 身份驗證請參考 https://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