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

时间:2011-07-09 06:33:22

标签: ssh amazon-ec2 lamp

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

我一直致力于在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

我之后尝试了第三次AMI,也安装了LAMP ......我根本无法进入那个。

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

我一直在寻找相当多的帮助,但我读过的每篇文章都假定用户可以使用root访问权限,或者在ec2-user上有sudo可用。我也没有。只是我需要一个新的形象吗?

非常感谢任何帮助......

6 个答案:

答案 0 :(得分:61)

我刚试过

$ sudo su

你的一个amis和瞧!我是根...

玩得开心!

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

答案 1 :(得分:5)

使用像PuTTY这样的真实SSH客户端,而不是文件传输客户端WinSCP。你的所有问题都将消失。

答案 2 :(得分:4)

对于Debian或Ubuntu EC2:

  1. 通过putty设置root密码:

    sudo passwd root
    
  2. 以root身份登录putty

    ubuntu@aws1:~$ su
    Password:
    
  3. 编辑/ etc / ssh / sshd_config文件并注释掉最后一个HostKey语句或类似于下面示例中的最后一个语句:

    vi /etc/ssh/sshd_config
    
  4. 然后

        # 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
    
    1. 在同一个文件中,更改以下内容如下所示:

      PermitRootLogin yes
      #PasswordAuthentication no
      
    2. 重新启动ssh

      service ssh restart
      
    3. 以root身份使用WinSCP中的密码登录

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

答案 3 :(得分:1)

(错误报告?)这是我在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]#

答案 4 :(得分:1)

文件:

的/ etc / sudoers的

有一行

默认值requiretty

对此进行评论可能会使错误消失。

我首先要试着理解为什么你妈的东西 命令不再有tty。

更改安全相关文件,例如 / etc / sudoers可能很安静。

答案 5 :(得分:1)

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