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

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

【问题讨论】:

  • 下载后别忘了运行 chmod 400 my_private_key.pem.txt。

标签: ubuntu amazon-ec2 ubuntu-10.04


【解决方案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,请按照以下步骤操作:

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

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

          1. 通过指定您的 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】:

                      确保检查这些东西

                      1. 私钥必须有400权限

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

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

                      【讨论】:

                        猜你喜欢
                        • 2011-10-01
                        • 2018-08-23
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2018-03-26
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多