如何为Amazon EC2实例设置SSH访问?

90
我需要访问运行Ubuntu 10.4的Amazon EC2实例的SSH。 我只有亚马逊用户名和密码。 有什么建议吗?

3
在下载完之后别忘了运行 chmod 400 my_private_key.pem.txt。 - Peter Kaminski
13个回答

159

基本上,您需要一个私有密钥文件才能通过SSH登录到您的EC2。按照以下步骤创建此文件:

  • 前往https://console.aws.amazon.com/ec2/home并登录您现有的Amazon帐户。
  • 在左侧单击“密钥对”或https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs
    • 您应该会看到由您(或在EC2创建过程中)生成的KEY列表。
    • 如果没有看到任何内容或丢失了您的私钥,请单击“创建密钥对”。
    • 输入唯一名称并按Enter键。
    • 下载面板将出现以供您保存私钥,请保存它。
    • 把它放在文件权限为“0600”的某个地方
  • 在左侧单击“实例”或https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances
    • 您应该会看到ec2-instances列表,如果没有看到,请创建一个。
    • 单击EC2机器并记录下公共DNS地址。
  • 打开您的终端(在Linux中)并键入以下命令:
    • ssh -i /path/to/private-key root@<ec2-public-dns-address> - 最新版本已避免使用root用户名,请根据您的发行版选择ec2-userubuntu作为用户名。
    • 按Enter键
    • 就这样。

6
通过ssh直接登录root账户可能不可行,您需要使用非root账户,例如_ec2-user_,所以您可以使用以下命令 'ssh -i /path/to/private-key ec2-user@hostname'。 - timbo
4
曾尝试连接时,提示我应该使用“ubuntu”登录而非“root”。显然我拥有的是Ubuntu服务器12.04实例。 - Vasiliy Stavenko
3
我成功创建了SSH账户,接下来是如何使用SCP上传文件到已创建的账户?但是当我尝试使用SCP上传时,它显示“Permission denied (publickey)”。 - Ashok KS
6
为什么我仍然收到“Permission denied (publickey)”这个错误信息? - Kasun Kariyawasam
3
你们如果收到了 "Permission denied (publickey)." 的错误提示,可能是在使用 Elastic Beanstalk。如果是这样,你需要进入 EB 环境配置中的安全选项,并选择新的密钥对。这样就会创建一个接受该密钥的新 EC2 实例。用户名是 ec2-user 或者可能是 ubuntu,但不是 root - Jorge Orpinel Pérez
显示剩余9条评论

25
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>

只需使用ubuntu代替root,您的问题就会得到解决。 干杯!


13

第一步)下载分配给您的EC2机器的私钥(在创建时仅需下载一次,建议将其保存在某处)

第二步)并执行以下命令:

chmod 400 MyKeyPair.pem
ssh -i MyKeyPair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

官方文档使用SSH连接您的Linux / Unix实例


7
请注意,13.04版本的当前用户是"ubuntu" ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com

4

如果您正在使用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

没有更多了!


如果我有多个针对不同区域的密钥,例如us-east-1.pem和us-west-2.pem,该怎么办? - Haseeb

4

首先,您需要使用EC2控制台创建密钥对。然后,使用您的私有密钥通过您选择的SSH客户端登录到服务器(用户名为ec2-user)。

登录后,如果需要获取root权限,可以使用命令sudo su -(请注意:不能直接以root身份登录)。


1

1)首先,对.pem文件进行chmod操作,以限制文件权限如下:

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 命令进入。


1

在AWS上设置Ubuntu,请按照以下步骤操作:

  1. 登录Amazon Web Services,选择EC2
  2. 选择启动实例,并按照向导选择正确的镜像(Ubuntu)、实例类型、配置VPC网络和子网、存储以及在安全组中允许SSH访问。然后点击启动
  3. 首次使用时,您可能需要设置密钥对并将其分配给实例。您也可以在密钥对中创建密钥对。创建完成后,请下载PEM文件并将其保存在安全的地方。
  4. 一旦实例启动,等待实例初始化运行

要通过SSH访问实例,请运行:

  1. Connect to Linux box by specifying your PEM file, e.g.

    ssh -i "file.pem" ubuntu@x.x.x.x
    

    Make sure your PEM file has 600 permission (chmod 600 file.pem).

故障排除

如果您正在运行VPC实例,并且您的安全组是正确的(具有正确的规则),但仍无法正常工作,则在VPC部分中检查您的子网,该子网应附加到您的VPC(同时由您的实例使用),并在路由表中设置新规则,其中0.0.0.0/0目标,您的Internet Gateway目标

有关更多详细信息,请参见:Troubleshooting Connecting to Your Instance

另请参阅:Possible reasons for timeout when trying to access EC2 instance


0

首先通过以下方式更改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


0

按照所有这些答案中建议的做法是不够的。对于每个实例,您都会看到一个安全组。当您启动新实例时,此设置将默认设置。您需要编辑安全组并添加ssh端口。稍后,当您想要托管您的网站时,还需要添加8080、8443、80、443端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接