如何为Amazon EC2实例设置SSH访问?
我需要通过SSH访问运行Ubuntu 10.4的Amazon EC2实例。 我所得到的是亚马逊的用户名和密码。 有任何想法吗?
基本上,你需要一个私钥文件通过SSHlogin到你的EC2。 请按照以下步骤创build一个:
- 转到https://console.aws.amazon.com/ec2/home并login到您现有的亚马逊账户。;
- 点击LHS上的“密钥对”或https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs 。
- 您应该看到您生成的密钥列表(或在EC2创build过程中)。
- 点击“创build密钥对”,如果你没有看到或者你丢失了你的私钥。
- input一个唯一的名字,然后回车。
- 下载面板将出现,以保存私钥,保存。
- 保存在文件许可“0600”
- 点击LHS上的“Instances”或https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances
- 你应该看到ec2实例列表,如果你没有看到,请创build一个。
- 点击EC2机器,记下公有DNS地址。
- 打开您的terminal(在Linux中)并input以下命令
-
ssh -i /path/to/private-key root@<ec2-public-dns-address>
– 根据你的发行版本,在最新发行版中已经避免使用root用户名,请selectec2-user
或ubuntu
作为你的用户名。 - 按Enter键
- 而已。
-
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>
只需使用ubuntu
而不是root
。 你的问题将被解决。 干杯!
步骤1)下载分配给您的ec2机器的私人密钥 (创build时只有一次下载,所以build议在某处提交)
步骤2)并激活下面的命令,
chmod 400 MyKeyPair.pem ssh -i MyKeyPair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
官方文档 : 使用SSH连接到您的Linux / Unix实例
请注意,13.04的当前用户是“ubuntu”ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com
您需要先创build密钥对 – 使用EC2控制台执行此操作。 然后使用您的私钥使用您select的SSH客户端进入服务器(用户名为ec2-user
)。
一旦进入,你可以发出一个sudo su -
获得root权限(如果你想的话)(注意:你不能直接以root身份login)。
如果您使用的是MacOS,则应该创build/编辑SSHconfiguration文件(〜/ .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,请按照以下步骤操作:
- login到Amazon Web Services并selectEC2 。
- select启动实例,然后按照向导select正确的映像(Ubuntu),实例types,configurationVPCnetworking和子网,存储并允许在安全组中进行SSH访问。 然后启动 。
- 这是第一次,您可能需要设置密钥对并将其分配给实例。 您也可以在密钥对中创build密钥对。 一旦创build,下载PEM文件并保存在安全的地方。
- 一旦实例启动,请等到实例初始化并运行 。
要通过SSH访问实例,请运行:
-
通过指定您的PEM文件连接到Linux框,例如
ssh -i "file.pem" ubuntu@xxxx
确保你的PEM文件有600个权限(
chmod 600 file.pem
)。
故障排除
如果您正在运行VPC实例,并且您的安全组是正确的(使用正确的规则),但仍然无法工作,请在VPC部分中检查应连接到您的VPC的 子网 (这两个子网均由您的实例使用)并设置路由表中的新规则,其中0.0.0.0/0
为目标 ,您的Internet网关为目标 。
有关更多详细信息,请查看: 连接到您的实例的疑难解答
另请参阅: 尝试访问EC2实例时可能出现超时的原因
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
没有以正确的用户身份loginOS Distro可能是问题。 对于某些新的AMI,用户名可能不是“ubuntu”,而是“ec2-user”。 对于Amazon Linux,例如我相信用户是“ec2-user”。 Eric Hammond在这里给出了例子: http : //alestic.com/2014/01/ec2-ssh-username
我的build议,请尝试:
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的至less你的Linux机器。
做所有这些答案中的build议是不够的。 针对每个实例,您都会看到一个安全组。 当你启动一个新的实例时,你将把这个东西设置为默认值。 您需要编辑安全组并添加ssh端口。 稍后,您还需要添加8080,8443,80,443端口,当您想要托pipe您的网站。
我也有通过SSH访问AWS的问题。
检查这些东西:
- 确保您的实例密钥必须具有“0600”权限。
- 检查你的安全组,22端口必须是open.or你可以打开所有stream量的入站,如果这不是安全威胁。
- 使用myIP编辑安全组行并保存。
那确实欺骗了我。
我接受AWS提供使用包含“所有Trafic”端口的默认安全组。
而且,经过很多次尝试连接到新的ec2实例后,我才意识到我应该编辑我使用过的安全组并手动添join站和出站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或服务器的链接,用户取服务器的用户名,身份文件是在创build实例时从AWS下载的文件。 只需在terminal中运行以下命令
ssh AWS
并享受它!
注意 :导航到.ssh
文件夹。 首先在主文件夹中按Ctrl + H
显示所有隐藏文件,最后显示cd .ssh