如何获取sudo的密码

时间:2015-02-09 02:12:29

标签: google-compute-engine sudo

我正在尝试将命令sudo -i -u postgres用于PostgreSQL,而Google Compute Engine VM正在向我询问我的帐户密码(不是root用户)。

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

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

3 个答案:

答案 0 :(得分:29)

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

sudo su -

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

sudo -i -u postgres

答案 1 :(得分:5)

https://cloud.google.com/compute/docs/instances

  

实例创建者和使用元数据添加的所有用户   sshKeys值是帐户的自动管理员   能够在不需要密码的情况下运行sudo。

所以你不需要那些不存在的密码 - 你需要使用元数据sshKeys值添加#34;!这样做的标准方式,我从同一页面引用:

$ 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 Developers Console用于类似目的,如果您愿意,请参阅https://cloud.google.com/compute/docs/console#sshkeys

答案 2 :(得分:0)

摘要

在创建VM时,请在“输入整个密钥数据”框中指定ssh用户。

详细信息

  1. 生成ssh密钥对并标识公共密钥:
    • 如果是ssh-keygen,则以“ .pub”结尾的文件
    • 如果为PuTTYgen,则为“粘贴...的公钥”框中的文本。

请注意,这些字段全都是一行,用空格分隔:“协议密钥blob用户名”。 对于用户名,您可以找到Windows用户名或类似“ rsa-key-20191106”的字符串。您将使用您选择的Linux用户名替换该字符串。

  1. 将公共密钥信息粘贴到“输入整个密钥数据”框中。

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

    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjUIG3Z8wKWf+TZQ7nVQzB4s8U5rKGVE8NAt/LxlUzEjJrhPI5m+8llLWYY2PH4atZzuIYvYR0CVWhZvZQzLQc33vDOjQohxV9Lg26MwSqK+bj6tsr9ZkMs2zqNbS4b2blGnr37+dnwz+FF7Es9gReqyPxL9bn5PU/+mK0zWMHoZSEfUkXBrgqKoMQTsYzbMERluByEpZm9nRJ6ypvr9gufft9MsWC2LPhEx0O9YDahgrCsL/yiQVL+3x00DO9sBOXxi8kI81Mv2Rl4JSyswh1mzGAsT1s4q6fxtlUl5Ooz6La693IjUZO/AjN8sZPh03H9WiyewowkhMfS0H06rtGQ== gcpuser
    
  3. 创建您的VM。 (例如Debian)

  4. 连接到虚拟机

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

    gcpuser@instance-1:~/.ssh$ cat authorized_keys
    # Added by Google
    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjUIG3Z8wKWf+TZQ7nVQzB4s8U5rKGVE8NAt/LxlUzEjJrhPI5m+8llLWYY2PH4atZzuIYvYR0CVWhZvZQzLQc33vDOjQohxV9Lg26MwSqK+bj6tsr9ZkMs2zqNbS4b2blGnr37+dnwz+FF7Es9gReqyPxL9bn5PU/+mK0zWMHoZSEfUkXBrgqKoMQTsYzbMERluByEpZm9nRJ6ypvr9gufft9MsWC2LPhEx0O9YDahgrCsL/yiQVL+3x00DO9sBOXxi8kI81Mv2Rl4JSyswh1mzGAsT1s4q6fxtlUl5Ooz6La693IjUZO/AjN8sZPh03H9WiyewowkhMfS0H06rtGQ== gcpuser
    
  6. 请注意,您属于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)
    
  7. sudo到root且没有密码

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

    root@instance-1:~# cat /etc/sudoers.d/google_sudoers
    %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
    

结论

在“输入整个密钥数据”中指定用户名具有以下结果:

  1. 在虚拟机中创建用户。
  2. 将密钥上传到〜/ .ssh
  3. 无密码sudo组的成员身份