我正在尝试将命令sudo -i -u postgres
用于PostgreSQL,而Google Compute Engine VM正在向我询问我的帐户密码(不是root用户)。
由于我从未发过密码,而且我总是通过SSH密钥登录我的服务器,因此我不确定密码是什么,如何重置密码或者可以找到密码。
请告诉我在哪里可以获取密码?
答案 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用户。
请注意,这些字段全都是一行,用空格分隔:“协议密钥blob用户名”。 对于用户名,您可以找到Windows用户名或类似“ rsa-key-20191106”的字符串。您将使用您选择的Linux用户名替换该字符串。
将公共密钥信息粘贴到“输入整个密钥数据”框中。
将第三个字段更改为要在VM上创建的实际用户。例如,如果是“ gcpuser”,则:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjUIG3Z8wKWf+TZQ7nVQzB4s8U5rKGVE8NAt/LxlUzEjJrhPI5m+8llLWYY2PH4atZzuIYvYR0CVWhZvZQzLQc33vDOjQohxV9Lg26MwSqK+bj6tsr9ZkMs2zqNbS4b2blGnr37+dnwz+FF7Es9gReqyPxL9bn5PU/+mK0zWMHoZSEfUkXBrgqKoMQTsYzbMERluByEpZm9nRJ6ypvr9gufft9MsWC2LPhEx0O9YDahgrCsL/yiQVL+3x00DO9sBOXxi8kI81Mv2Rl4JSyswh1mzGAsT1s4q6fxtlUl5Ooz6La693IjUZO/AjN8sZPh03H9WiyewowkhMfS0H06rtGQ== gcpuser
创建您的VM。 (例如Debian)
连接到虚拟机
请注意,您的公钥已存在:
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
在“输入整个密钥数据”中指定用户名具有以下结果: