Google云中设置的SSH key设置失败
之前使用Google的云服务--Google cloud platform,通过配置的密钥对来通过SSH连接服务器,方便快捷。由于之前的账号到期了(你懂的),新开一个账号,一切安排妥当后,在网页端配置ssh密钥是却遇到问题了:
- 手动往服务器中的
~/.ssh/authorized_keys
文件中添加我的公钥后,可以通过SSH访问了。但是,一段时间后authorized_keys
中手动添加的公钥莫名其妙的消失.... - 通过
Computer Engine>元数据>SSH密钥
添加密钥后,在服务器中的~/.ssh/authorized_keys
文件中并没有我们添加的密钥,相应的也不能实现SSH访问。
为什么?
Google搜索一通,有Google官方,serverfault及stackoverflow上的各种回答,还算是没白费,至少知道了个大概原因:
- Google的服务器中有一个守护进程,会不断执行一些自动化操作,其中就包括一个设置元数据的功能(metadata),就是这个功能导致
authorized_keys
中手动添加的公钥被删除。所以,官方建议设置SSH公钥时,使用后台的元数据功能来添加SSH密钥(公钥)。 - 我一直使用的就是后台的元数据功能添加的公钥,为什么还是不成功呢?经历了几个小时的折腾后,也不知道怎么的突然就怀疑上我的公钥了,于是鬼使神差的将我的公钥做了点点修改后,特么的的就OK了。
怎么办?
- 正如官方所建议的那样:使用后台的元数据功能来添加SSH公钥:
Computer Engine>元数据>SSH密钥
。 - 对公钥的格式做略微的改动。官方要求的公钥格式是这样的:
ssh-rsa [KEY_VALUE] [USERNAME]
[KEY_VALUE]
是SSH公钥值。[USERNAME]
是此SSH密钥的用户,修改为登录此服务器的Google用户名。
由于我的公钥是之前配置GitHub的时候生成的,一直沿用至今,长的像这样:
修改为这样(登录Google服务器的邮箱为:mygce@gmail.com):