Redhat
cloud-init 不在 gce 中插入實例級 ssh 密鑰
我通過(YAML 表示)
metadata: items: - key: sshKeys value: root:ssh-rsa AAAAB... non@nan
創建 gcloud 實例時。但我不能 ssh 到實例
$ ssh 139.242.197.104.bc.googleusercontent.com Host key fingerprint is SHA256:aSSOS1tMiF9h43C6UIJQW0TqXuYVMfRic3Lm7gYRECQ Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
看起來 ssh 密鑰未在啟動時插入。實例是從 qcow2 轉換為原始格式並上傳的標準 RHEL 7.2 kvm 來賓映像。知道我正在做的是否是在 GCE 中指定 ssh 密鑰的正確咒語,以及 cloud-init 是否支持我想要的?
嗯,似乎無法得到任何 GCE 答案。不過想通了。首先,目前的 Red Hat Enterprise Linux (v7.2) cloud-init 版本不支持實例 ssh 密鑰(它只處理項目級密鑰)。
cloud-init
主幹雖然確實已經支持它們,所以希望下游很快就會恢復。與此同時,我使用以下內容user-data
來模擬這個(同樣是 YAML 表示):元數據:items: - key: sshKeys value: root:ssh-rsa AAAAB... non@nan - key: user-data value:| #cloud-config disable_root: false preserve_hostname: true runcmd: - "curl 'http://metadata.google.internal/computeMetadata/v1/instance/attributes/sshKeys' -H 'Metadata-Flavor: Google' | sed -r -e 's/(^|,)[^\\S]*:/\\1/g' -e 's/,/\\n/g' >> /root/.ssh/authorized_keys"
請注意,Google文件只討論
startup-script
元數據鍵。就我的閱讀而言,即使上游cloud-init
也不關心該元數據密鑰。它正在尋找user-data
如上所示的密鑰。希望這可以幫助。