3

我对 EC2 非常陌生,今天我已经在免费层下设置了所有内容。所以,我使用(假设默认用户)登录到我的 ec2 ubuntu

ssh -i ~/.ssh/mykeypaid.pem ubuntu@<my ip address>

现在,我编辑了我的 sudoers 文件,如下所示:

ubuntu ALL=(ALL:ALL) ALL

然后修改/etc/ssh/sshd_config如下:

Protocol 2
PermitRootLogin no
AuthorizedKeysFile  %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no

现在,当我尝试通过 ssh 重新登录并尝试:

sudo su -

我被要求输入一个 ubuntu 密码——我真的没有。我一直在尝试按照此处的说明进行操作,但我不确定他说的是什么意思:

Edit your ~/.ssh/authorized_keys and put your public key inside it. Make sure you can login without a password now once your key is in place.

我应该在 ~/.ssh/authorized_keys 中包含什么公钥?当我查看时,~/.ssh/authorized_keys我已经看到以

ssh-rsa .....

我将不胜感激任何建议来解决这个问题。现在,我无法返回 sudoers 文件 - 因为它要求我输入ubuntu我认为奇怪的密码(?)

我应该终止我的实例并重新开始吗?谢谢。

4

1 回答 1

9

我编辑了我的 sudoers 文件如下:
ubuntu ALL=(ALL:ALL) ALL

无需在 Ubuntu EC2 实例上编辑 sudoers。它已经为无密码的 sudo 设置了/etc/sudoers.d/90-cloudimg-ubuntu

我应该终止我的实例并重新开始吗?

是的,根据你所说的,我建议从一个新实例开始。通过编辑 sudoers 文件以要求为没有密码的帐户输入密码,您实际上已将自己锁定在外。(我写了一篇文章,描述了如何从损坏的 sudoers 中恢复,但在您的情况下,重新开始要容易得多。

我应该在 ~/.ssh/authorized_keys 中包含什么公钥?

您可以使用您在运行实例时指定的 ssh 密钥,以与最初相同的方式简单地离开authorized_keys并使用 ssh。或者,您可以添加任何其他想要授予访问权限的 ssh 密钥,就像在管理 Linux 机器时一样。一旦实例启动,就没有任何 EC2 特定于 ssh 密钥管理的内容。

一般来说,我建议将您的个人公共 ssh 密钥上传到 EC2,然后在启动新实例时指定该名称。这样可以更轻松地使用默认 ssh 密钥 ssh 进入新实例。这是我写的一篇文章:http ://alestic.com/2010/10/ec2-ssh-keys

于 2013-05-10T23:50:54.557 回答