2015-02-09 100 views
10

我试图使用PostgreSQL的命令sudo -i -u postgres,并且Google Compute Engine虚拟机要求我为我的帐户(而不是根目录)输入密码。如何获取sudo的密码

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

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

回答

5

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

的实例创建器和使用元数据 sshKeys值添加的任何用户都自动管理员帐户,与 到无需密码运行须藤的能力。

所以你不需要那个不存在的密码 - 你需要“使用元数据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 

,或者您可以使用谷歌开发者控制台类似用途看https://cloud.google.com/compute/docs/console#sshkeys如果你愿意说。

26

要成为一个GCE VM另一个非根用户,首先通过无密码sudo成为root(因为这是如何sudo上GCE VM镜像构造):

sudo su - 

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

sudo -i -u postgres 
+0

如果我想更改我的默认shell? – user 2016-09-28 15:29:00

+0

@user - 与在相应的Linux发行版上执行操作的方式相同,例如使用['chsh'](https://linux.die.net/man/1/chsh)。这不是GCE特有的。 – 2016-09-30 01:19:39

+1

在GCE中,您使用RSA密钥登录,而不使用密码。 google compute vm AFAIK中没有用户密码。 – user 2016-09-30 12:57:22