我在GCE集群中注意到,当我向项目元数据添加SSH密钥时,它会自动添加到/home/[user]/.ssh/authorized_keys.这是我期望的行为(以及我目前正在做的任务的愿望).但是,我在集群中的一台机器根本没有更新authorized_keys文件,无论我是删除项目元数据还是添加项目元数据.我甚至尝试完全删除authorized_keys文件以查看它是否将被重新创建(它不是).
所有服务器都是最新的Ubuntu 14.04,据我所知,只有这一个实例存在问题.它是群集中“最老的”实例,因此在阅读https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#addkey时,我想知道它是否符合以下声明:
If your instance does not support the newer Metadata values,add or remove the older instance-only sshKeys value that applies your key only to a specific instance and also blocks all project-wide keys when the value is set.
但是我删除了只有sshKeys的实例,问题仍然存在.在我摧毁之前的任何想法&重新创建图像以确保我能够使用“新”元数据?
首先,确保您的VM实例可以与元数据服务器通信,并且可以读取项目范围的sshKeys值.要验证这一点,请连接到VM并运行以下命令:
curl http://Metadata.google.internal/computeMetadata/v1/project/attributes/sshKeys -H "Metadata-Flavor: Google"
该命令的输出应该是您已添加到项目元数据中的SSH密钥.
如果命令无法与元数据通信,则表示内部防火墙会阻止VM与元数据服务器之间的通信.
如果通信成功并且您可以读取sshKeys的值,那么您应该验证帐户管理器守护程序是否正在运行.在Ubuntu 14.04中,守护程序脚本位于:
/usr/share/google/google_daemon/manage_accounts.py
使用以下命令验证其运行状态:
sudo ps aux | grep manage_accounts.py