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


87

我需要通过SSH访问运行Ubuntu 10.4的Amazon EC2实例。我所拥有的只是Amazon用户名和密码。有任何想法吗?


2
下载后,请不要忘记运行chmod 400 my_private_key.pem.txt。
彼得·卡明斯基

Answers:


159

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

  • 转到https://console.aws.amazon.com/ec2/home并登录到您现有的Amazon帐户。
  • 单击LHS上的“密钥对”或https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs
    • 您应该看到您(或在EC2创建过程中)生成的KEY列表。
    • 如果您看不到任何密钥或丢失了私钥,请单击“创建密钥对”。
    • 输入唯一的名称,然后按Enter。
    • 将出现一个下载面板,供您保存并保存私钥。
    • 使用文件权限“ 0600”将其保存在某处
  • 单击LHS上的“实例”或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>-根据您的发行版选择ec2-userubuntu作为用户名,在最新版本中避免使用root用户名。
    • 点击Enter
    • 而已。

6
您可能无法直接通过ssh以root用户身份登录。您将必须使用非root帐户(例如ec2-user),所以使用ssh -i / path / to / private-key ec2-user @ hostname
timbo 2012年

4
尝试连接后,它告诉我应该使用ubuntulogin而不是root。显然我有ubuntu服务器12.04实例。
Vasiliy Stavenko

3
我成功创建了SSH帐户,接下来是如何使用创建的帐户使用SCP上载文件?当我尝试使用SCP上载时,它说“权限被拒绝(公钥)”。
Ashok KS 2013年

5
仍然得到此消息“权限被拒绝(公钥)”。这是为什么?
Kasun Kariyawasam,2015年

2
大家都得到“权限被拒绝(公钥)”。可能正在使用Elastic Beanstalk。如果是这样,您需要进入EB env Config(安全性),然后选择新的密钥对。将创建接受密钥的新EC2实例。用户名是ec2-user或也许是ubuntu,但不是root
豪尔赫·奥皮内尔

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

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


12

步骤1)下载分配给您ec2机器的私钥 (创建后仅下载一次,因此建议在某处提交)

步骤2)并执行以下命令,

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

您需要首先创建一个密钥对-使用EC2控制台进行操作。然后使用您的私钥ec2-user通过您选择的SSH客户端SSH到服务器(用户名为)中。

进入后,您可以根据需要发出a sudo su -以获得根(注意:您不能直接以root身份登录)。


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

1

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

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

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

  1. 通过指定您的PEM文件连接到Linux框,例如

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

    确保您的PEM文件具有600权限(chmod 600 file.pem)。

故障排除

如果你正在运行VPC实例,您的安全组是正确的(用正确的规则),它仍然没有工作,VPC部分检查你的子网应连接到您的VPC(包括使用您的实例)和设置路由表中的新规则以“ 目标”0.0.0.0/0目标,您的Internet网关为“ 目标”

有关更多详细信息,请检查:对实例进行故障排除连接

另请参阅:尝试访问EC2实例时超时的可能原因


1

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


0

可能没有以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,则可能只想完全重新启动计算机,以使群集之间具有统一性。如果这是您的问题,那么您可能至少要为Linux机器使用相同的OS Distro。


0

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


0

我接受AWS提供的使用默认安全组的提议,其中包括“所有流量”端口。

而且,经过无数次尝试在新的ec2实例上进行连接之后,我才意识到我应该编辑所使用的安全组,并手动将22端口(ssh)添加到入站和出站!

希望能帮助到你 !


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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.