GCE项目的SSH密钥不能传播

我注意到在我的GCE集群中,当我将SSH密钥添加到项目元数据中时,它会自动添加到/home/[user]/.ssh/authorized_keys。 这是我期望的行为(也是对我目前所做的任务的渴望)。 但是,群集中的一台机器根本无法更新其authorized_keys文件,无论是删除项目元数据还是将项目添加到项目元数据中。 我甚至尝试彻底删除authorized_keys文件,看看它是否会被重新创build(不是)。

所有的服务器都是最新的Ubuntu 14.04,据我所知只有这一个实例有问题。 这是群集中“最老”的实例,所以在阅读https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#addkey时,我想知道是否需要遵循以下声明:

如果您的实例不支持更新的元数据值,请添加或删除较旧的仅实例sshKeys值,该值仅将您的密钥应用于特定的实例,并在设置值时阻止所有项目范围的密钥。

但我已经删除实例只有sshKeys和问题依然存在。 任何想法之前,我摧毁和重新创build的形象,以确保我能够使用“新”元数据?

首先,确保您的虚拟机实例可以与元数据服务器进行通信,并可以读取项目范围的sshKeys值。 要validation这一点,请连接到您的VM并运行以下命令:

 curl http://metadata.google.internal/computeMetadata/v1/project/attributes/sshKeys -H "Metadata-Flavor: Google" 

该命令的输出应该是您添加到项目元数据中的SSH密钥。 如果命令无法与元数据进行通信,那意味着您的内部防火墙会阻止您的虚拟机和元数据服务器之间的通信。

如果通信成功,您可以读取sshKeys的值,那么您应该validation帐户pipe理器守护进程正在运行。 在Ubuntu 14.04中,守护进程脚本位于:

 /usr/share/google/google_daemon/manage_accounts.py 

使用以下命令validation其运行状态:

 sudo ps aux | grep manage_accounts.py