【发布时间】:2019-02-25 23:40:36
【问题描述】:
我正在尝试通过将 SSH 密钥添加到项目元数据来授予对 GCE 虚拟机的访问权限。我当前的 SSH 密钥在项目元数据中,我可以使用 很好 连接:
ssh -i ~/.ssh/<private_key> <username>@<instance_ip>
现在,我生成了另一个密钥:
ssh-keygen -t rsa -f ~/.ssh/<new_key> -C <new_username>
将生成的公钥添加到项目元数据后,然后运行:
ssh -i ~/.ssh/<new_private_key> <new_username>@<instance_ip>
但是我得到Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 运行-vvv 标志除了密钥被拒绝之外并没有向我显示太多。
我知道/检查过的事情:
- 防火墙不是问题,因为我可以使用同一位置的原始密钥进行连接
- 实例正在运行 SSH(运行
nc <instance_nat_ip> 22显示“OpenSSH”等) - 生成任何 SSH 密钥时均未使用密码
- 对项目范围的元数据没有实例级别的限制
- 尚未添加实例级 ssh 密钥
- 没有导致密钥格式错误的换行符/换行符
-
~./ssh上的权限不是问题,因为另一个密钥对在同一目录中工作正常,此外,两个密钥对无论如何都具有相同的权限 - 项目或实例未启用 OSLogin
我尝试过的事情:
- 删除和读取项目元数据中的 SSH 密钥
- 尝试使用在另一个人的机器上生成的新密钥对
- 正在重启 sshd 服务
问题:
-
在将密钥添加到元数据之前,在创建一个新的测试实例表明情况并非如此,项目元数据中的所有用户都是自动创建的ssh-keygen步骤中指定的用户名是否必须已经存在于远程实例上?即我是否必须在 SSH 进入实例时运行sudo useradd <new_username> - 为什么我现有的 SSH 密钥有效,而新的密钥却没有,即使它们以相同的方式添加?
-
enable-oslogin:TRUE有可能在很久以前曾短暂地应用于实例(我不确定,因为我不是创建实例的人),但它不再存在于实例或项目元数据中。启用它会不会导致一些问题?
编辑:我在同一个项目中使用相同的网络详细信息启动了一个新实例,并且能够使用新密钥通过 SSH 连接到该实例。原始实例仍然拒绝密钥
【问题讨论】:
-
查看 sshd 日志文件。
-
您是否对实例进行了任何更新?
标签: google-cloud-platform google-compute-engine