这个问题这几天一直困扰着我。
我一直致力于在 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 。我也没有。只是我需要一张新图片吗?
任何帮助将不胜感激...
我刚刚尝试过
$ sudo su
在你的一位朋友身上,瞧!我是根...
玩得开心!
[ec2-user@ip-10-244-146-238 ~]$ sudo su
[root@ip-10-244-146-238 ec2-user]#
使用真正的 SSH 客户端,例如 PuTTY,而不是文件传输客户端 WinSCP。你所有的问题都会消失。
对于 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 的备份,然后在完成后恢复到原始状态。
(Bug 报告?)这是我在 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 [email protected]
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]#
文件:
/etc/sudoers
有一条线
默认要求
注释掉这一点可能会让错误消失。
我首先会尝试理解为什么你的百胜里有一些东西 命令不再有 tty。
更改安全相关文件,例如 /etc/sudoers 具有潜在的危险。
您需要编辑 sshd_config 文件以允许基于密码的访问 并且您需要为 root 用户添加密码。 很简单,只需按照步骤操作即可—— sudo 密码 root sudo nano -w /etc/ssh/sshd_config 取消注释/添加以下行
PasswordAuthentication yes
sudo su -l 对我来说效果最好