Google Cloud Platform‎, SSH設定

2024010522:37

在 GCP 建立完 VM linux 後  (以 CentOS 7為例)
VM linux 自動新增一個類似你 gmail 的帳號
例如 gmail = [email protected]
VM linux 裡頭就會多一個 helloabc_gmail_com 帳號



 
 

家裡的 linux 要 ssh 到 VM

 

 
 

先在 linux 下產生 private、public key:

$ ssh-keygen -f mykey
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):  (給這個 private key 一個密碼,可避免這組 private key被偷時的風險)
Enter same passphrase again:  (再key一次密碼)
Your identification has been saved in mykey.
Your public key has been saved in mykey.pub.
The key fingerprint is:
73:66:5d:c2:13:5f:7e:64:4a:68:17:0d:36:6f:1a:ab user@uuuuu10
The key's randomart image is:
+--[ RSA 2048]----+
|            ..*++|
|           .o=.O.|
|           .+.= =|
|           . + =.|
|        S + . o  |
|         =   .   |
|            E    |
|                 |
|                 |
+-----------------+
$


完成後會產生兩個檔案:
mykey   <-- private key 要自己妥善留存
mykey.pub   <-- public key


$ cat mykey.pub    檔案內容 類似 (中間有省略)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBpNeFZyXXXehjPuGCkEjb/t
laNQt0fztORSCFFQIoKHkQzi7SNhp48kagyOHDNj6mY1LmVZB/sIj2oCa1AFupoFuBYc/XILP
rTX60fIlnBYkHl+6Kq/TX2hzKv user@uuuuu10


把這一段複製下來(注意是長長的一行,無換行字元)
最後面 user@uuuuu10 改為你要登入 VM linux 的帳號 (如 helloabc_gmail_com ) 方便辨識/管理這筆資料


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBpNeFZyXXXehjPuGCkEjb/t
laNQt0fztORSCFFQIoKHkQzi7SNhp48kagyOHDNj6mY1LmVZB/sIj2oCa1AFupoFuBYc/XILP
rTX60fIlnBYkHl+6Kq/TX2hzKv helloabc_gmail_com


貼到 VM instance 管理畫面中的 SSH 金鑰欄位,如




google 就會把上面這段 Public Key 寫入到 VM helloabc_gmail_com 帳號:
~helloabc_gmail_com/.ssh/authorized_keys 檔案中



$ ssh -i mykey [email protected]
Enter passphrase for key 'id_rsa':  (輸入你 private key 的密碼)
Last login: Fri Mar  6 02:00:09 2015 from 220-135-xxx-xxx.hinet-ip.hinet.net
[helloabc_gmail_com@instance-1 ~]$  (登入成功、不需再輸入 VM helloabc_gmail_com 的密碼)


但這樣無法直接用 ssh  [email protected] 登入
會被拒絕,像這樣
$ ssh  [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).


要修改 VM 中的:
[root@instance-1 helloabc_gmail_com]# vi /etc/ssh/sshd_config
PasswordAuthentication yes 

改完要 restart sshd
[root@instance-1 helloabc_gmail_com]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service





$ ssh  [email protected]
Password:  (輸入 VM 中 helloabc_gmail_com  的密碼)
Last login: Thu Mar  5 22:58:14 2015 from 220-135-xxx-xxx.hinet-ip.hinet.net
[helloabc_gmail_com@instance-1 ~]$ (登入成功)

PS: helloabc_gmail_com 的密碼
要先在 GCP 後台的 瀏覽器SSH 登入後設定新密碼
(當然,也要順便設定 root 密碼)



 
 

windows 下 Putty 的登入方式:

 

 
 

先以 Puttygen 來產生金鑰 private/public key

下載  Putty Key Generator  ( puttygen.exe )
     https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


執行畫面


按下 Generate 後,滑鼠在空白區域隨意移動


ps:  SSH-1(RSA) = RSA1 是較舊的系統在用
選 SSH-2RSA = RSA2  ,2048bits 就好



把產生好的金鑰 Public/ Private key 都存下來

#1 儲存 Public Key
畫面中 Key passphrase / Confirm passphrase 兩個欄位要輸入「金鑰密碼」 (自己記好)


畫面中的 Public Key
300多 bytes,類似,複製下來:
ssh-rsa AAAAB3NzaC1yc2EA.................e5BJoFgn52e9VN+9MGipP5w== rsa-key-20150305

改成
ssh-rsa AAAAB3NzaC1yc2EA.................e5BJoFgn52e9VN+9MGipP5w== helloabc_gmail_com

 (2015-05-22)
 helloabc_gmail_com 是 vm linux 上的帳號
 特別注意! 在 vm linux 中, helloabc_gmail_com 這個帳號的 home目錄 必須在 /home 底下,
不可在其它 partition 中 否則無法登入(Why ??? 不清楚)
  如 /home/helloabc_gmail_com
 目錄名稱倒是不一定得跟 帳號名稱相同

#2 儲存 Private Key
  按「Save private key」儲存私鑰
  記得存檔時要給檔案名稱,例如 private2.ppk





GCP 設定

貼到 GCP後台的 SSH金鑰 中:



google 就會把上面這段 Public Key 寫入到 helloabc_gmail_com 帳號:
~helloabc_gmail_com/.ssh/authorized_keys 檔案中

以 Putty 連進 VM






登入成功。不需輸入 VM中的 linux密碼

===

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -C helloabc@dev211 -b 2048
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mic/.ssh/id_rsa.
Your public key has been saved in /home/mic/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:HQkdMlyeaauk9+cmQoIsTsTxV3uhIeMU7XbOKO4GhfA hellofire
The key's randomart image is:
+---[RSA 2048]----+
|      .++oo.     |
|  o   + ==o+     |
| . = + = +B.     |
|  o E + =ooo     |
| . . + .S*o      |
|  o + ooo.o      |
| o . o.+o        |
|  .   o.... o    |
|     o.  ..=.    |
+----[SHA256]-----+

** -C 後面的文字 只是在 id_rsa.pub 中加上的 "說明文字"


可以另用以上方式產生公私金鑰
好處是下 ssh 指令時,可以少打 -i 參數
例如,原 ssh 命令:
$ ssh -i mykey [email protected]

新的ssh命令 (會自動帶入 .ssh/id_rsa 金鑰)
$ ssh [email protected]

===
其它參考資料

使用 SSH 連線至您的 Linux 執行個體 -- AWS
https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html