重新启动EC2并以root用户身份登录

时间:2014-02-13 09:08:38

标签: amazon-web-services amazon-ec2

我是这个AWS的新手。

我启动了一个EC2实例并使用cygwin来做这些事情,一切正常我启动了EC2机器,我能够:

  1. 使用ssh和pem文件登录,即使用以下命令的键值对名称文件: ssh -i pem.file root @ ip,(这样可行,我以root用户身份登录)
  2. 使用sudo -i
  3. 获取root访问权限
  4. 安装任何东西,安装Apache,tomcat等所有服务器
  5. 但是一旦我停止了实例并再次启动它,它就不允许我以root身份登录?

    首先,每次停止并启动机器时,IP都会发生变化。

    其次,为什么一旦机器停止后再次启动,命令:      ssh -i pem.file root @ ip 显示以下消息:

    enter image description here

    请说清楚。

4 个答案:

答案 0 :(得分:8)

这是因为您用于启动实例的AMI不允许通过SSH进行root登录。你推出了什么样的Linux实例?

您可以在/etc/ssh/sshd_config中更改该选项,该选项为PermitRootLogin yes(请务必重新启动sshd服务)。但是,为了使.pem密钥文件起作用,您必须设置公钥以适用于root。快速执行此操作的方法是将/home/cloud-user/.ssh/authorized_keys复制到/root/.ssh/authorized_keys但是,这不是推荐的做法。

您收到的Please login as the user "cloud-user" rather than the user "root".消息是由于command中的/root/.ssh/authorized_keys选项。

对于实例的公共IP,这是因为您的实例是所谓的 EC2 Classic 。如果您希望公共IP保持不变,则必须在具有Internet网关的自定义VPC中启动该实例,并为其附加弹性IP。 This是一个很好的指南。

答案 1 :(得分:1)

您安装了cloud-init RPM吗? CentOS AMI的cloud-init RPM创建名为cloud-user的用户,但没有必要的sudo权限。因此,重新启动后,无法sudo或做任何有意义的事情。

要解决此问题,请启动vanilla CentOS实例,安装cloud-init RPM,但重新启动之前,修改/etc/cloud/cloud.cfg以授予cloud-user的sudo权限

  default_user:
    name: cloud-user
    gecos: Cloud user
    groups: [wheel, adm]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash

sudo的{​​{1}}权限现在可以在重新启动后继续存在。或者,您可以将root访问权保留为show here

答案 2 :(得分:1)

  

每次停止并启动机器时,IP都会发生变化。

这是自动分配的IP 的正常行为。一旦没有被主动使用,你就会丢失IP,然后亚马逊会给你一个新的IP。

为了保留您的IP,您需要保留弹性IP (简称 EIP )并将其分配给您的实例。此IP将从您的实例中分离。即使您销毁实例,它仍将保留在您的帐户中。 EIP是你的,直到你发布它。每个运行实例的第一个EIP是免费的;但是,如果实例未运行,则每小时的空闲时间需要支付符号费(即如果您停止实例或终止实例)。

EIP是为您保留的,直到您将其发布到亚马逊。

  

其次,为什么一旦机器停止后再次启动,命令:   ssh -i pem.file root @ ip显示以下消息:

PermitRootLogin 

in

/etc/ssh/sshd_config 

会解决它;然后,您还需要将公钥附加到位于

中的authorized_hosts文件
$HOME/.ssd
root用户的

这篇文章解释了如何做到这一点: https://www.cloudinsidr.com/content/how-to-rsync-files-and-directories-between-remote-hosts/

  

我启动了一个EC2实例并使用cygwin来完成这些工作

如果我可以提出建议:不要使用Cygwin。使用PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

答案 3 :(得分:0)

根据正常的AMI结构,“cloud-user”应该是一个NOPASSWD sudoer,这意味着您可以将“sudo”添加到您需要的任何命令中。

我知道这在技术上没有回答你的问题,但你没有说明为什么需要实际的root ssh。您可能希望修改设计/工作流程,因此不需要实际的“root”用法。

还要确保您拥有EBS支持的实例。如果您正在使用实例(临时)存储,我相信在重新启动时会丢失任何文件系统修改。