如何为 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-user
或 ubuntu
作为您的用户名。
回车
就是这样。
【讨论】:
您可能无法通过 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 访问?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例