跳转至

Google云中设置的SSH key设置失败

之前使用Google的云服务--Google cloud platform,通过配置的密钥对来通过SSH连接服务器,方便快捷。由于之前的账号到期了(你懂的),新开一个账号,一切安排妥当后,在网页端配置ssh密钥是却遇到问题了:

  1. 手动往服务器中的~/.ssh/authorized_keys文件中添加我的公钥后,可以通过SSH访问了。但是,一段时间后authorized_keys中手动添加的公钥莫名其妙的消失....
  2. 通过Computer Engine>元数据>SSH密钥添加密钥后,在服务器中的~/.ssh/authorized_keys文件中并没有我们添加的密钥,相应的也不能实现SSH访问。

为什么?

Google搜索一通,有Google官方,serverfault及stackoverflow上的各种回答,还算是没白费,至少知道了个大概原因:

  1. Google的服务器中有一个守护进程,会不断执行一些自动化操作,其中就包括一个设置元数据的功能(metadata),就是这个功能导致authorized_keys中手动添加的公钥被删除。所以,官方建议设置SSH公钥时,使用后台的元数据功能来添加SSH密钥(公钥)。
  2. 我一直使用的就是后台的元数据功能添加的公钥,为什么还是不成功呢?经历了几个小时的折腾后,也不知道怎么的突然就怀疑上我的公钥了,于是鬼使神差的将我的公钥做了点点修改后,特么的的就OK了。

怎么办?

  1. 正如官方所建议的那样:使用后台的元数据功能来添加SSH公钥:Computer Engine>元数据>SSH密钥
  2. 对公钥的格式做略微的改动。官方要求的公钥格式是这样的:ssh-rsa [KEY_VALUE] [USERNAME]
    • [KEY_VALUE] 是SSH公钥值。
    • [USERNAME] 是此SSH密钥的用户,修改为登录此服务器的Google用户名

由于我的公钥是之前配置GitHub的时候生成的,一直沿用至今,长的像这样:

ssh-rsa AAAA...中间省略...BaUYQ== mygithub@gmail.com
修改为这样(登录Google服务器的邮箱为:mygce@gmail.com):
ssh-rsa AAAA...中间省略...BaUYQ== mygce