我需要通过 SSH 访问运行 Ubuntu 10.4 的 Amazon EC2 实例。我只有亚马逊用户名和密码。有任何想法吗?
基本上,您需要一个私钥文件才能通过 SSH 登录到您的 EC2。请按照以下步骤创建一个:
转到 https://console.aws.amazon.com/ec2/home 并登录您现有的亚马逊账户。
单击 LHS 上的“密钥对”或 https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs。您应该会看到您(或在 EC2 创建过程中)生成的 KEY 列表。如果您没有看到任何密钥或您丢失了私钥,请单击“创建密钥对”。输入一个唯一的名称,然后按 Enter。将出现一个下载面板供您保存私钥,保存它。将其保存在具有文件权限“0600”的地方
您应该会看到您(或在 EC2 创建过程中)生成的 KEY 列表。
如果您没有看到任何密钥或您丢失了私钥,请单击“创建密钥对”。
输入一个唯一的名称,然后按 Enter。
将出现一个下载面板供您保存私钥,保存它。
将其保存在具有文件权限“0600”的地方
单击 LHS 上的“Instances”或 https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances 如果没有,您应该会看到 ec2-instances 列表看到任何,然后请创建一个。单击 EC2 机器并记下公共 DNS 地址。
您应该会看到 ec2-instances 列表,如果您没有看到,请创建一个。
单击 EC2 机器并记下公共 DNS 地址。
打开终端(在 Linux 中)并键入以下命令 ssh -i /path/to/private-key root@
ssh -i /path/to/private-key root@
按回车
而已。
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>
只需使用 ubuntu
而不是 root
。你的问题将得到解决。干杯!
第 1 步)下载分配给您的 ec2 机器的私钥(创建时仅下载一次。因此建议在某处提交)
步骤 2) 并触发以下命令,
chmod 400 MyKeyPair.pem
ssh -i MyKeyPair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
官方文档:Connecting to Your Linux/Unix Instances Using SSH
注意,13.04 的当前用户是“ubuntu” ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com
您需要先创建一个密钥对 - 使用您的 EC2 控制台执行此操作。然后使用您选择的 SSH 客户端使用您的私钥通过 SSH 连接到服务器(用户名是 ec2-user
)。
进入后,如果需要,您可以发出 sudo su -
以获得 root(注意:您不能直接以 root 身份登录)。
如果您使用的是 MacOS,您应该创建/编辑 SSH 配置文件 (~/.ssh/config) 并输入如下内容:
Host *.amazonaws.com
User ubuntu
Port 22
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
IdentityFile ~/PATH/YOUR_DOWNLOADED_KEY.pem
然后连接到任何 EC2 实例:
ssh MYNAME.amazonaws.com
而已!
要在 AWS 上设置 Ubuntu,请按照以下步骤操作:
登录到 Amazon Web Services 并选择 EC2。选择启动实例并按照向导选择正确的映像 (Ubuntu)、实例类型、配置 VPC 网络和子网、存储并在安全组中允许 SSH 访问。然后启动。第一次,您可能需要设置密钥对并将其分配给实例。您还可以在 Key Pairs 中创建密钥对。创建后,下载 PEM 文件并将其保存在安全的地方。启动实例后,等待实例初始化并运行。
要通过 SSH 访问实例,请运行:
通过指定您的 PEM 文件连接到 Linux 机器,例如 ssh -i "file.pem" ubuntu@xxxx 确保您的 PEM 文件具有 600 权限(chmod 600 file.pem)。
故障排除
如果您正在运行 VPC 实例,并且您的安全组是正确的(使用正确的规则)并且它仍然无法正常工作,请在 VPC 部分 检查您的子网 中应该附加到您的 VPC(您的实例都使用)并在 Route Table 中设置新规则,将 0.0.0.0/0
作为 Destination 和您的 Internet 网关 作为目标。
更多详情请查看:Troubleshooting Connecting to Your Instance
另请参阅:Possible reasons for timeout when trying to access EC2 instance
1)首先chmod
.pem file
用于限制文件权限,如下所示
chmod 400 my-key-pair.pem
2)然后 ssh
直接从 .ssh
文件夹使用以下命令
ssh -i my-key-pair.pem ec2-user@ec2-198-99-90-3.compute-1.amazonaws.com
注意:- 导航到 .ssh
文件夹。首先按 Ctrl + H
显示所有隐藏文件,最后按 cd .ssh
没有以正确的用户身份登录 OS Distro 可能是问题所在。对于某些新的 AMI,用户名可能不是“ubuntu”,而是“ec2-user”。例如,对于 Amazon Linux,我认为用户是“ec2-user”。 Eric Hammond 在这里举了例子:http://alestic.com/2014/01/ec2-ssh-username
我的建议,试试:
ssh -i /path/to/file.pem ec2-user@ec2...
ssh -i /path/to/file.pem ubuntu@ec2...
ssh -i /path/to/file.pem root@ec2...
如果您有错误的 AMI,您可能只想完全重新启动机器,以便在集群之间保持一致性。如果这是您的问题,您可能至少需要相同的 OS Distro 用于您的 linux 机器。
做所有这些答案中建议的事情是不够的。针对每个实例,您都会看到一个安全组。当您启动一个新实例时,您会将这个东西设置为默认值。您需要编辑安全组并添加 ssh 端口。稍后,当您想托管您的网站时,您还需要添加 8080、8443、80、443 端口。
我接受了 AWS 提供的使用包含“所有流量”端口的默认安全组的提议。
而且,在多次尝试连接我的新 ec2 实例之后,我才意识到我应该编辑我使用的安全组并手动添加入站和出站 22 端口 (ssh)!
希望能帮助到你 !
首先更改pem文件的权限
chmod 400 path/to/key_pair.pem
在文件 ~/.ssh/config 内,在文件顶部添加以下行
Host AWS
Hostname myserver.com
User myuser
IdentityFile path/to/.pem/file
port 22
主机名取服务器的 IP 或链接,用户取服务器的用户名,身份文件是您创建实例时从 AWS 下载的文件。只需在终端中运行以下命令
ssh AWS
并享受它!
注意:导航到 .ssh
文件夹。首先按主文件夹中的 Ctrl + H
以显示所有隐藏文件,最后按 cd .ssh
确保检查这些东西
私钥必须具有 400 权限确保端口 22 对您尝试访问的 AWS 实例开放。 ssh -i privatekey.pem ubuntu@XXX.XXX.XXX.XXX // XXX.XXX.XXX.XXX = 你的实例公网ip
ubuntu
登录而不是root
。显然我有 ubuntu server 12.04 实例。ec2-user
或者可能是ubuntu
,但不是root
。