我在 Google 控制台中有这个 VM 实例。该实例是在另一个组织的项目中创建的,然后分配给我的电子邮件地址。
我尝试直接通过浏览器访问该实例但失败了。
然后我尝试添加密钥并直接连接。我尝试在 Windows 中使用 PuTTy 以及在 Ubuntu 中使用终端。
我从实例中得到的所有信息是 Ubuntu 中的“身份验证失败次数过多”和 PuTTy 中的“拒绝我们的密钥”
服务器有网络设置:
Ingress : Allow SSH from anywhere : Apply to all : IP ranges: 0.0.0.0/0 : tcp:22 : Allow
我可以毫无问题地访问其他几个实例,所以这个问题让我很困惑!
答案1
根据您的描述,您的实例似乎正在使用os-login 功能,因为您提到该实例是在另一个组织内的项目中创建的,如果是这样的话,您在项目内的用户帐户中缺少一些角色,并且在组织级别下也缺少一些角色(不确定这是否已在组织级别应用)
1- 对于您的电子邮件地址,您需要有iam.serviceAccountUser以及以下登录角色之一:
- 这compute.os登录角色,不授予管理员权限
- 这计算.osAdminLogin角色,授予管理员权限
2- 在组织层面,他们需要计算.osLoginExternalUser角色以允许组织外部的外部用户访问他们的实例。
如果你没有使用 os-login 功能,我建议你检查一下宾客环境如果它运行正确。
答案2
如果计算引擎实例不再接受 SSH 连接,则可能有很多原因导致这种情况发生。SSH 连接问题的一些常见原因如下:
-- 实例上已启用 OS Login [2]
-- 操作系统登录未启用 [3]
-- 实例的磁盘已满
-- sshd 守护进程配置不正确
ssh 故障排除文档 [1] 描述了许多解决一些最常见的 SSH 问题的技巧和方法。
如果本文档 [1] 中提供的步骤对您不起作用,并且您需要从持久启动磁盘恢复数据,则可以分离启动磁盘,然后将该磁盘作为辅助磁盘附加到新实例上 [4]。
为了更好地理解角色和权限文档[5]可能会有所帮助。
[1]https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh
[2]https://cloud.google.com/compute/docs/instances/managing-instance-access#enable_oslogin
[4]https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh#move_boot_disk