Google compute engine 如何获取sudo的密码

Google compute engine 如何获取sudo的密码,google-compute-engine,sudo,Google Compute Engine,Sudo,我正在尝试对PostgreSQL使用命令sudo-I-u postgres,而Google计算引擎VM正在询问我的帐户密码(不是root) 由于我从未发布过密码,而且我总是通过SSH密钥登录到我的服务器,所以我不确定密码是什么,如何重置密码,或者在哪里可以找到密码 请告诉我在哪里可以获得密码?Per 实例创建者和使用元数据添加的任何用户 sshKeys值是帐户的自动管理员,具有 无需密码即可运行sudo的功能 因此,您不需要那个不存在的密码——您需要“使用元数据sshKeys值添加”!这样做的标

我正在尝试对PostgreSQL使用命令
sudo-I-u postgres
,而Google计算引擎VM正在询问我的帐户密码(不是root)

由于我从未发布过密码,而且我总是通过SSH密钥登录到我的服务器,所以我不确定密码是什么,如何重置密码,或者在哪里可以找到密码

请告诉我在哪里可以获得密码?

Per

实例创建者和使用元数据添加的任何用户 sshKeys值是帐户的自动管理员,具有 无需密码即可运行sudo的功能

因此,您不需要那个不存在的密码——您需要“使用元数据sshKeys值添加”!这样做的标准方法,我引用同一页的话:

$ echo user1:$(cat ~/.ssh/key1.pub) > /tmp/a
$ echo user2:$(cat ~/.ssh/key2.pub) >> /tmp/a
$ gcloud compute project-info add-metadata --metadata-from-file sshKeys=/tmp/a

或者,您也可以出于类似目的使用Google开发者控制台,看看您是否愿意这样做。

要成为GCE虚拟机上的另一个非root用户,首先通过无密码的
sudo
成为
root
(因为这是在GCE虚拟机映像上配置
sudo
的方式):

然后切换到您想要成为的用户,或作为另一种用途运行命令,例如,在您的情况下,即:

sudo -i -u postgres
总结 创建VM时,在“输入整个密钥数据”框中指定ssh用户

细节
  • 生成ssh密钥对并标识公钥:
    • 如果是ssh keygen,则为以“.pub”结尾的文件
    • 如果是PuTTYgen,则“用于粘贴的公钥…”框中的文本
  • 注意这些字段,都是一行,用空格分隔:“协议密钥blob username”。 对于用户名,您可以找到您的Windows用户名或类似“rsa-key-20191106”的字符串。您将用您选择的Linux用户名替换该字符串

  • 将公钥信息粘贴到“输入整个密钥数据”框中

  • 将第三个字段更改为要在VM上创建的实际用户。例如,如果“gcpuser”,则:

  • 创建你的虚拟机。(例如,Debian)

  • 连接到虚拟机

    • 直接从ssh或PuTTY(而不是浏览器窗口)
    • 使用私钥
    • 指定用户
  • 请注意,您的公钥已存在:

    gcpuser@instance-1:~/.ssh$ cat authorized_keys
    # Added by Google
    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjUIG3Z8wKWf+TZQ7nVQzB4s8U5rKGVE8NAt/LxlUzEjJrhPI5m+8llLWYY2PH4atZzuIYvYR0CVWhZvZQzLQc33vDOjQohxV9Lg26MwSqK+bj6tsr9ZkMs2zqNbS4b2blGnr37+dnwz+FF7Es9gReqyPxL9bn5PU/+mK0zWMHoZSEfUkXBrgqKoMQTsYzbMERluByEpZm9nRJ6ypvr9gufft9MsWC2LPhEx0O9YDahgrCsL/yiQVL+3x00DO9sBOXxi8kI81Mv2Rl4JSyswh1mzGAsT1s4q6fxtlUl5Ooz6La693IjUZO/AjN8sZPh03H9WiyewowkhMfS0H06rtGQ== gcpuser
    
  • 请注意,您属于google sudoers组

    gcpuser@instance-1:~/.ssh$ id
    uid=1000(gcpuser) gid=1001(gcpuser) groups=1001(gcpuser),4(adm),30(dip),44(video),46(plugdev),1000(google-sudoers)
    
  • sudo到root,无密码

    gcpuser@instance-1:~$ sudo -i -u root
    root@instance-1:~#
    
  • 请注意sudoers文件:

    root@instance-1:~# cat /etc/sudoers.d/google_sudoers
    %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
    
  • 结论 在“输入整个密钥数据”中指定用户名会产生以下结果:

  • 在虚拟机中创建用户
  • 正在将密钥上载到~/.ssh
  • 无密码sudo组中的成员身份

  • 如果我想更改我的默认shell?@user-与您在适当的Linux发行版上所做的相同,例如,使用。这不是特定于GCE的。在GCE中,您使用RSA密钥登录,而不是使用密码。google compute vm AFAIK中没有用户密码。@user-由于您没有密码
    sudo
    访问权限,您可以运行:
    sudo chsh-s/bin/dash$user
    -我刚刚测试过,它可以工作。@user-这解释了
    chsh
    总是要求密码的原因,以及如何在更改自己的shell时使其不需要。另外,这篇文章的链接解释了如何只允许在每个用户的基础上,而不是在全球范围内为每个人提供此功能。希望这有帮助。
    gcpuser@instance-1:~$ sudo -i -u root
    root@instance-1:~#
    
    root@instance-1:~# cat /etc/sudoers.d/google_sudoers
    %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL