【问题标题】:SSH to AWS Instance without key pairsSSH 到 AWS 实例,无需密钥对
【发布时间】:2011-09-01 11:07:35
【问题描述】:

1:有没有不使用密钥对登录 AWS 实例的方法?我想在一个实例上设置几个站点/用户。但是,我不想提供密钥对供客户登录。

2:在具有指向不同目录的不同域的 1 个 AWS 实例中设置托管站点/用户的最简单方法是什么?

【问题讨论】:

标签: ssh amazon-ec2 ssh-keys


【解决方案1】:

问题 1 的答案

这是我在Ubuntu EC2 上所做的:

A) 使用密钥对以 root 身份登录

B) 设置必要的用户及其密码

# sudo adduser USERNAME
# sudo passwd USERNAME

C) 编辑/etc/ssh/sshd_config 设置

有效用户无需密钥即可登录

PasswordAuthentication yes

也希望root也可以无密钥登录

PermitRootLogin yes

D) 重启ssh 守护进程

# sudo service ssh restart

如果你使用 centOS,只需将 ssh 更改为 sshd

现在您无需密钥对即可登录您的ec2 实例。

【讨论】:

  • 谢谢,在 Amazon AMI 上,最后一个命令应该是:“sudo service sshd restart”
  • 谢谢。但这仍然不能解决默认的ec2-user 帐户。
  • 嘿,@シリウス,这也适用于 ec2 用户。您只需要为其设置一个密码,然后就可以使用这个答案了。
  • 我建议不要使用默认帐户,如 ec2-user 或 ubuntu。让其他帐户登录。
  • 在 Ubuntu EC2 上,“sudo service ssh restart”对我有用。
【解决方案2】:

1) 您应该能够更改 ssh 配置(在 Ubuntu 上,这通常位于 /etc/ssh 或 /etc/sshd)并重新启用密码登录。

2) AWS 对此并没有什么特别之处 - Apache 可以开箱即用地处理 VHOSTS(虚拟主机) - 允许您指定从某个目录提供某个域。我会在谷歌上搜索有关细节的更多信息。

【讨论】:

  • 在这些情况下(1 个 ip 和多个虚拟主机)你还能使用 HTTPS 吗?您知道解释为所有域设置 openSSL 的文档吗?
  • 所以我在我的问题中解决了这个问题,但由于这是我想澄清的公认答案。这个答案有一个 AWS 特定的组件。 Cloud Init 将作为启动的一部分运行,它将覆盖您使用此方法设置的配置。这就是我的回答所要解决的问题。
【解决方案3】:

我通过 Google 来到这里,寻找有关如何设置云初始化以不禁用 AWS 上的 PasswordAuthentication 的答案。两个答案都没有解决问题。如果没有它,如果您创建一个 AMI,那么在实例初始化时 cloud init 将再次禁用此选项。

执行此操作的正确方法是,您需要更正 cloud init 的设置,而不是手动更改 sshd_config(用于在供应期间配置实例的开源工具。阅读更多:https://cloudinit.readthedocs.org/en/latest/)。 cloud init 的配置文件位于: /etc/cloud/cloud.cfg

这个文件用来设置很多cloud init使用的配置。通读此文件,了解您可以在 cloud-init 上配置的项目示例。这包括新创建实例上的默认用户名等项目)

要启用或禁用 SSH 密码登录,您需要更改参数 ssh_pwauth 的值。在文件 /etc/cloud/cloud.cfg 中将参数 ssh_pwauth 从 0 更改为 1 后,烘焙一个 AMI。如果您从这个新出炉的 AMI 启动,它将在配置后启用密码身份验证。

您可以通过检查其他答案中提到的 ssh 配置中 PasswordAuthentication 的值来确认这一点。

【讨论】:

  • 我怀疑这个答案暗示了正确的解决方案,但它写得太差了,我无法理解。
  • 我什至不知道这个文件存在。很好的答案!
  • @JimMaguire 我想我假设了很多背景信息。我已经添加了更多说明。这有帮助吗?你有什么特别的建议想让我采纳吗?
  • 如果在 /etc/cloud/cloud.cfg 中没有找到“PasswordAuthentication”,请在 /etc/cloud/cloud.cfg.d/00_defaults.cfg 中查找“ssh_pwauth”并更改它值从“假”到“真”。
【解决方案4】:

最近,AWS 在 Systems Manager 服务中添加了一项名为 Sessions Manager 的功能,该功能允许用户通过 SSH 连接到实例,而无需设置私钥或打开端口 22。我相信身份验证是通过 IAM 和可选的 MFA 完成的。

您可以在这里找到更多信息:

https://aws.amazon.com/blogs/aws/new-session-manager/

【讨论】:

    【解决方案5】:

    su - root

    转到/etc/ssh/sshd_config

    vi sshd_config

    身份验证:

    PermitRootLogin yes

    要启用空密码,请更改为是(不推荐)

    PermitEmptyPasswords no

    更改为 no 以禁用隧道明文密码

    PasswordAuthentication yes

    :x!

    然后重启ssh服务

    root@cloudera2:/etc/ssh# service ssh restart
    ssh stop/waiting
    ssh start/running, process 10978
    

    现在转到 sudoers 文件 (/etc/sudoers)。

    用户权限规范

    root  ALL=(ALL)NOPASSWD:ALL
    yourinstanceuser  ALL=(ALL)NOPASSWD:ALL    / This is the user by which you are launching instance.
    

    【讨论】:

      【解决方案6】:

      AWS 添加了一项新功能,即 AWS SSM 会话管理器,无需任何开放端口即可连接到实例。 https://aws.amazon.com/blogs/aws/new-session-manager/

      我创建了一个简洁的 SSH ProxyCommand 脚本,它在连接到目标实例期间临时将您的公共 ssh 密钥添加到目标实例。这样做的好处是您无需将 ssh(22) 端口添加到安全组即可连接,因为 ssh 连接是通过 ssm 会话管理器建立的。

      AWS SSM SSH 代理命令 -> https://gist.github.com/qoomon/fcf2c85194c55aee34b78ddcaa9e83a1

      【讨论】:

        【解决方案7】:

        亚马逊添加了EC2 Instance Connect。

        有一个官方的脚本来自动化这个过程https://pypi.org/project/ec2instanceconnectcli/

        pip install ec2instanceconnectcli

        那么就

        mssh <instance id>

        【讨论】:

          猜你喜欢
          • 2021-02-07
          • 2013-09-18
          • 1970-01-01
          • 2018-01-02
          • 2021-05-21
          • 2016-03-26
          • 1970-01-01
          • 2017-08-19
          • 2016-01-16
          相关资源
          最近更新 更多