如何在 Amazon EC2 实例中启用根 SSH 访问?

Posted

技术标签:

【中文标题】如何在 Amazon EC2 实例中启用根 SSH 访问?【英文标题】:How Can I Enable Root SSH Access in An Amazon EC2 Instance? 【发布时间】:2011-10-01 18:27:26 【问题描述】:

过去几天这个问题一直困扰着我。

我一直致力于在 Amazon EC2 上设置 LAMP 服务器。主要问题是我正在为需要大量高端处理的客户端编写应用程序,Amazon EC2 似乎是一个不错的选择。

最初,我从一个基本的 AMI 开始,它真的没有任何东西。我尝试使用 root 访问权限登录 SSH(使用 WinSCP),并被告知使用 ec2-user。

我尝试使用 ec2-user,并且能够登录。但是,我仍然没有 root 访问权限并且无法安装 apache。我做了一些原因,发现了“sudo”命令,几乎我读到的关于这个问题的每一篇文章都说要么使用 root 访问权限,要么登录到 ec2-user 和用户 sudo。

此后,我再次尝试使用已安装 LAMP 的其他 AMI。我能够让它工作,建立一个数据库并开始运行一个网站。但是,我仍然需要安装一些扩展。也就是说,我尝试用于此应用程序的 API 需要安装 SOAP。

这是我的困境:

/$ whereis soap
soap:
/$ whereis yum
yum: /usr/bin/yum /etc/yum /etc/yum.conf /usr/share/man/man8/yum.8.gz
/$ yum install php-soap
Loaded plugins: fastestmirror, priorities, security
You need to be root to perform this command.
/$ sudo yum install php-soap
sudo: sorry, you must have a tty to run sudo

Command 'sudo yum install php-soap' failed with return code 1 and error message sudo: sorry, you must have a tty to run sudo

我无法使用 yum,因为我没有 root 访问权限,每当我登录到 root 时,它要么告诉我使用 ec2-user 要么提供我没有的密码。另一种选择是使用 sudo 使 ec2-user 像 root 一样工作,但我总是收到错误“抱歉,你必须有一个 tty 才能运行 sudo。”我已经在线运行了该错误消息,并且似乎我需要将用户添加到 sudoers...如果没有 root 访问权限,我将无法做到这一点。

这个完全相同的问题在两个单独的 AMI 上困扰着我。第一次我刚刚收到一条消息,说我必须以 ec2-user 身份登录(并且我必须有一个 tty 才能运行 sudo),而第二次(安装了 LAMP)要求我输入 root 和用户的密码我遇到了同样的 sudo 错误。

这是我使用的 AMI 的 ID:

ami-8c1fece5
ami-6ae81503

后来我还尝试了第三个也安装了 LAMP 的 AMI...我什至无法进入那个。

我确实下载了我的 SSH 密钥并使用 PuttyGen 将其转换为 ppk 文件。我可以以 ec2-user 身份成功登录,但无法在任何地方获得 root 访问权限。

我一直在四处寻找这方面的帮助,但我读过的每一篇文章都假定用户要么具有可用的 root 访问权限,要么在 ec2-user 上具有可用的 sudo。我也没有。只是我需要一张新图片吗?

任何帮助将不胜感激...

【问题讨论】:

真的,这不是编程问题或与 ***.com 相关...应该移至unix.stackexchange.com -- Dan Grossman 回答了您的问题... 我认为它与编程有关,所以它会算... 【参考方案1】:

我刚试过

$ sudo su

在你的一个朋友身上,瞧!我是根...

玩得开心!

[ec2-user@ip-10-244-146-238 ~]$ sudo su
[root@ip-10-244-146-238 ec2-user]# 

【讨论】:

感谢您的帮助,但我以前做过,但仍然没有用。问题是我试图使用的程序(我只是认为 WinSCP 的命令提示符会和其他任何东西一样工作,但显然不是......) 我们可以像这样为root设置密码,如何启用root用户?默认是禁用的。【参考方案2】:

使用真正的 SSH 客户端,例如 PuTTY,而不是文件传输客户端 WinSCP。你所有的问题都会消失。

【讨论】:

谢谢...我对命令行提示和 SSH 有点陌生,所以我只是假设 WinSCP 可以正常工作...我现在可以正常工作了。 +1 唯一对我有用的是从 PuTTY 而不是 WinSCP 运行 sudo - 谢谢一百万,让我开心:) this... 实际上没有回答“如何在 Amazon EC2 实例中启用 Root SSH 访问?”问题... @FélixGagnon-Grenier 那是因为他真正的问题是“我该如何克服这个错误you must have a tty to run sudo”。标题中提出的更笼统但与提问者无关的问题的答案出现在我的下方。在这里已经回答了 5 年,所以我不知道你为什么现在觉得有必要发表评论。 哦..我没有满足需求,只是说明我对所见内容的理解。没有冒犯的意思。【参考方案3】:

对于 Debian 或 Ubuntu EC2:

    通过putty设置root密码:

    sudo passwd root
    

    以 root 身份登录 putty

    ubuntu@aws1:~$ su
    Password:
    

    编辑您的 /etc/ssh/sshd_config 文件并注释掉最后一个 HostKey 语句或与下面示例中的最后一个类似的语句:

    vi /etc/ssh/sshd_config
    

然后

    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    #HostKey /etc/ssh/ssh_host_ed00000_key

    在同一文件中,将以下内容更改为如下所示:

    PermitRootLogin yes
    #PasswordAuthentication no
    

    重启ssh

    service ssh restart
    

    使用来自 WinSCP 的密码以 root 身份登录

*我建议在编辑之前创建文件 sshd_config 的备份,然后在完成后恢复为原始文件。

【讨论】:

服务应该是sshd 所以service sshd restart @timothymarois sshd 用于 CentOS/RedHat【参考方案4】:

(错误报告?)这是我在 ec2 实例上的日志,有时 sudo su 不起作用。我必须注销并再次 ssh 才能使其正常工作。

    [ec2-user@ip-XXXX ~]$ su root
    Password:
    su: incorrect password
    [ec2-user@ip-XXXX ~]$ exit
    logout
    Connection to ec2-50XXXX.compute-1.amazonaws.com closed.
    ssh -i automata.pem ec2-user@ecXXXX.compute-1.amazonaws.com
    whereis yum
    yum: /usr/bin/yum /etc/yum.conf /etc/yum /usr/share/man/man8/yum.8.gz
    [ec2-user@ip-XXXX ~]$ sudo su
    [root@ip-XXXX ec2-user]#

【讨论】:

我不确定。我什至不再使用亚马逊 AWS。不过,我遇到的真正问题是我使用了错误的程序。【参考方案5】:

文件:

/etc/sudoers

有一条线

默认要求

注释掉这个可能会使错误消失。

我会首先尝试理解为什么你的 yum 中有东西 command 不再有 tty。

更改与安全相关的文件,例如 /etc/sudoers 有潜在的安静危险。

【讨论】:

【参考方案6】:

您需要编辑 sshd_config 文件以允许基于密码的访问 您需要为您的根用户添加密码。 简单,只需按照步骤 - 须藤密码根 sudo nano -w /etc/ssh/sshd_config 取消注释/添加以下行PasswordAuthentication yes

【讨论】:

以上是关于如何在 Amazon EC2 实例中启用根 SSH 访问?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon EC2 ssh 由于不活动而超时

连接到 Amazon EC2 实例时 SSH 挂起

Amazon EC2 - 将根实例存储设备与 EBS 设备交换

Amazon EC2 - 使用实例存储根设备转换 EBS 根设备

如何为 Amazon EC2 实例设置 SSH 访问?

Amazon 实例 Ec2 连接超时