我是这个AWS的新手。
我启动了一个EC2实例并使用cygwin来做这些事情,一切正常我启动了EC2机器,我能够:
但是一旦我停止了实例并再次启动它,它就不允许我以root身份登录?
首先,每次停止并启动机器时,IP都会发生变化。
其次,为什么一旦机器停止后再次启动,命令: ssh -i pem.file root @ ip 显示以下消息:
请说清楚。
答案 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支持的实例。如果您正在使用实例(临时)存储,我相信在重新启动时会丢失任何文件系统修改。