GCP 中繼資料存放著 SSH Key 相關設定,有分成全專案
與單一實例
兩種設定方式。影響選擇設定的模式取決於,使用者是否有足夠的權限存取所有實例,抑或是只能存取部分實例。在實務上的開發中,可能因為人數極少外加求快速而,使用全專案設定方式會較為方便。而對於正式上線的環境,有哪些人適合連線則應有所安排,這時部分使用單一實例模式同時搭配封鎖全專案公開 SSH 金鑰,就能既滿足部分人的高權限,但又不至有潛在因素導致非相關人員可以竊取資料。
全專案
$ gcloud compute project-info describe
單一實例
$ gcloud compute instances describe [INSTANCE_NAME]
查看內容如下
...
metadata:
fingerprint: QCofVTHlggs=
items:
- key: ssh-keys
value: |-
[USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]
[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
...
準備一個 SSH 列表文件,格式如下
[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
[USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]
其中:
使用指令根據準備好的文件做變更,列表不存在的值,如原有設定存在會視為是要被刪除
$ gcloud compute project-info add-metadata --metadata-from-file ssh-keys=[LIST_PATH]
or
$ gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=[LIST_PATH]
開啟後僅看單一實例中的 SSH 金鑰
$ gcloud compute instances add-metadata [INSTANCE_NAME] --metadata block-project-ssh-keys=TRUE
編寫 /tmp/ssh-key.txt 內容如下:
root :ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf/FjS72qbXtKIWPiio4DXBZMkF7MFJUFIeHiGyct16YY0zHEltaA+ZItBUiWDpWN53asmpx3vcSV9IkQijp25PfkTAhfG2MP6OfBpJKThdBKqEQ2++XpT4Rbvlhut77Y7nJcDwldH8uJxorJQhEieI0gHSugmgXKWaW7Frcl3NfuH6w7x4OmqZKpGF9TdaB8H4ZG0agd8iopkxphSlM8EJ6rthpXozUgx9PmoN8XEghDf4c/sWiu6qSr9eFSB+kutM7E8s0DZEBThJF2fI3tZQkaBCFvfXhOoieWYq8ltzopZkzozWm9KyGoBqeCoZByZm6gEk/p2R/TF/qHZDhXD root@gsdk
test :ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf/FjS72qbXtKIWPiio4DXBZMkF7MFJUFIeHiGyct16YY0zHEltaA+ZItBUiWDpWN53asmpx3vcSV9IkQijp25PfkTAhfG2MP6OfBpJKThdBKqEQ2++XpT4Rbvlhut77Y7nJcDwldH8uJxorJQhEieI0gHSugmgXKWaW7Frcl3NfuH6w7x4OmqZKpGF9TdaB8H4ZG0agd8iopkxphSlM8EJ6rthpXozUgx9PmoN8XEghDf4c/sWiu6qSr9eFSB+kutM7E8s0DZEBThJF2fI3tZQkaBCFvfXhOoieWYq8ltzopZkzozWm9KyGoBqeCoZByZm6gEk/p2R/TF/qHZDhXD test@gsdk
執行指令
$ gcloud compute project-info add-metadata --metadata-from-file ssh-keys=/tmp/ssh-key.txt
執行前請先確定已建立實例,如未建立請執行 (Option)
$ gcloud compute instances create vm-0
編寫 /tmp/ssh-key.txt,範例內容如下:
root :ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf/FjS72qbXtKIWPiio4DXBZMkF7MFJUFIeHiGyct16YY0zHEltaA+ZItBUiWDpWN53asmpx3vcSV9IkQijp25PfkTAhfG2MP6OfBpJKThdBKqEQ2++XpT4Rbvlhut77Y7nJcDwldH8uJxorJQhEieI0gHSugmgXKWaW7Frcl3NfuH6w7x4OmqZKpGF9TdaB8H4ZG0agd8iopkxphSlM8EJ6rthpXozUgx9PmoN8XEghDf4c/sWiu6qSr9eFSB+kutM7E8s0DZEBThJF2fI3tZQkaBCFvfXhOoieWYq8ltzopZkzozWm9KyGoBqeCoZByZm6gEk/p2R/TF/qHZDhXD root@gsdk
test :ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf/FjS72qbXtKIWPiio4DXBZMkF7MFJUFIeHiGyct16YY0zHEltaA+ZItBUiWDpWN53asmpx3vcSV9IkQijp25PfkTAhfG2MP6OfBpJKThdBKqEQ2++XpT4Rbvlhut77Y7nJcDwldH8uJxorJQhEieI0gHSugmgXKWaW7Frcl3NfuH6w7x4OmqZKpGF9TdaB8H4ZG0agd8iopkxphSlM8EJ6rthpXozUgx9PmoN8XEghDf4c/sWiu6qSr9eFSB+kutM7E8s0DZEBThJF2fI3tZQkaBCFvfXhOoieWYq8ltzopZkzozWm9KyGoBqeCoZByZm6gEk/p2R/TF/qHZDhXD test@gsdk
封閉全專案 SSH Keys (Option)
$ gcloud compute instances add-metadata vm-0 --metadata block-project-ssh-keys=TRUE
執行指令
$ gcloud compute instances add-metadata vm-0 --metadata-from-file ssh-keys=/tmp/ssh-key.txt
如果是不清楚 SSH 的讀者們可能要多花點時間了解一下,只要依照上述所提的方法設定成功後。設備將正常獲得可以被連線的權限,將實例的外部 IP 提供給使用者,使用者即可通過 ssh {ip address}
遠端連線進行操作。
請參考下列兩篇文章: