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

Posted

技术标签:

【中文标题】如何为 Amazon EC2 实例设置 SSH 访问?【英文标题】:How do I set up SSH access for an Amazon EC2 instance? 【发布时间】:2011-09-17 16:41:34 【问题描述】:

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

【问题讨论】:

下载后别忘了运行 chmod 400 my_private_key.pem.txt。 【参考方案1】:

基本上,您需要一个私钥文件才能通过 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 列表。 如果您没有看到任何密钥或您丢失了私钥,请单击“创建密钥对”。 输入一个唯一的名称并按回车键。 会出现一个下载面板供您保存私钥,保存。 使用文件权限“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> - 在最新版本中已避免使用 root 用户名,根据您的发行版选择 ec2-userubuntu 作为您的用户名。 回车 就是这样。

【讨论】:

您可能无法通过 ssh 直接以 root 身份登录。您必须使用非 root 帐户,例如 ec2-user 所以 'ssh -i /path/to/private-key ec2-user@hostname 一旦我尝试连接它告诉我应该使用ubuntu登录而不是root。显然我有 ubuntu server 12.04 实例。 我成功创建了SSH账号,接下来是如何使用创建的账号使用SCP上传文件???当我尝试使用 SCP 上传时,它显示“权限被拒绝(公钥)。” 仍然得到这个消息“权限被拒绝(公钥)。”这是为什么呢? 你们都得到“权限被拒绝(公钥)”。可能正在使用 Elastic Beanstalk。如果是这样,您需要进入 EB env Config、Security,并选择新的密钥对。将创建接受密钥的新 EC2 实例。用户名是ec2-user 或者ubuntu,但不是root【参考方案2】:
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>

只需使用ubuntu 而不是root。你的问题将得到解决。 干杯!

【讨论】:

【参考方案3】:

步骤 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

【讨论】:

【参考方案4】:

注意,13.04 的当前用户是“ubuntu” ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

如果您使用的是 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【参考方案7】:

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

    登录Amazon Web Services并选择EC2。 选择启动实例并按照向导选择正确的映像 (Ubuntu)、实例类型、配置 VPC 网络和子网、存储并在安全组中允许 SSH 访问。然后启动。 第一次,您可能需要设置密钥对并将其分配给实例。您还可以在 Key Pairs 中创建密钥对。创建后,下载 PEM 文件并将其保存在安全的地方。 实例启动后,等待实例初始化运行

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

    通过指定您的 PEM 文件连接到 Linux 机器,例如

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

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

疑难解答

如果您正在运行 VPC 实例,并且您的安全组是正确的(使用正确的规则)但仍然无法正常工作,请在 VPC 部分中检查您的子网 应该附加到您的 VPC (您的实例都 使用 )并在 Route Table 中设置新规则 0.0.0.0/0 为 Destination 和您的 Internet 网关 作为 Target

更多详情请查看:Troubleshooting Connecting to Your Instance

另见:Possible reasons for timeout when trying to access EC2 instance

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

没有以正确的用户身份登录 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 机器。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

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

希望对你有帮助!

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

确保检查这些东西

    私钥必须有400权限

    确保端口 22 对您尝试访问的 AWS 实例开放。

    ssh -i privatekey.pem ubuntu@XXX.XXX.XXX.XXX // XXX.XXX.XXX.XXX = 你的实例公网ip

【讨论】:

以上是关于如何为 Amazon EC2 实例设置 SSH 访问?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon EC2 实例中启用根 SSH 访问?

连接到 Amazon EC2 实例时 SSH 挂起

在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例

html 管理Amazon EC2 - SSH登录并保护您的实例

Amazon 实例 Ec2 连接超时

启动 Amazon EC2 实例时如何自动启动 Web 服务?