Google sudoing 要求输入密码时的云虚拟机

Google Cloud VM when sudoing asks for password

我一直在使用 Google Cloud debian VM,使用 sudo 执行超级用户任务完全没有问题(sudo 不要求输入密码)。

今天我像往常一样通过 SSH 连接,当我尝试 sudo something 它开始要求输入密码:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for -----:

根据文档,它不应要求输入密码,因为已经通过 SSL 密钥验证连接。

这个问题我自己解决了。我 post 我为遇到类似问题的任何人所遵循的步骤:

  1. 删除了保留磁盘的 VM 实例。
  2. 已创建新 VM 实例 用于恢复目的。
  3. 将旧 VM 磁盘附加到新实例
  4. 挂载到/mnt/

    # mount /dev/sdb1 /mnt/
    
  5. 将根更改为挂载分区

    # chroot /mnt/
    
  6. 现在根据需要编辑 sudoers 文件和用户密码和组
  7. 卸载磁盘

    # umount /dev/sdb1
    
  8. 取消附加磁盘,删除恢复实例,然后使用同一磁盘重新创建旧 VM

我现在遇到了这个问题,在你遇到的相同情况下(突然询问密码)但我只是注销(关闭 ssh 会话)并重新登录并且它有效。

为避免这种情况,一种解决方案是从 GCP 控制台在网络浏览器上打开 ssh 终端。你可以试试这个。这是因为 Google Clound Engine

上的 SSH 密钥相关配置

今天我在 CentOS 8.x VM 上遇到了同样的问题。经过一些测试,我找到了一个更简单的解决方案。 "google-sudoers" 组允许在 /etc/sudoers.d/google_sudoers 文件中执行 sudo,因此,要解决此问题并使其永久化,请按照以下步骤将您的用户添加到 "google-sudoers" 组:

  1. 从 GCP 的 Web 控制台通过 SSH 连接到您的虚拟机
  2. 运行 sudo usermod -a -G google-sudoers USER 将您的用户添加到 google-sudoers 组
  3. 关闭当前的 SSH 会话并打开一个新会话
  4. 测试一切正常

您应该能够 运行 sudo 命令或再次获得 root 权限。