【问题标题】:changed password for ubuntu user does not survive making a new AMI from instanceubuntu 用户更改的密码无法从实例创建新的 AMI
【发布时间】:2014-08-06 21:03:48
【问题描述】:

我正在 Amazon EC2 上开发 Ubuntu AMI。

在一个正在运行的实例上,我将 ubuntu 用户的密码更改为(比如说)“foobar”。

(我知道 EC2 中通常不需要用户密码,因为 ssh 使用公钥/私钥,但我正在设置一个使用 unix 用户名/密码进行身份验证的 Web 应用程序,所以我需要确保它有效。)

我尝试了几种设置密码的方法:

  1. sudo passwd ubuntu
  2. 回显“ubuntu:foobar”|密码
  3. 使用厨师的“用户”资源进行设置

在所有情况下,如果我从正在运行的实例创建一个新图像,然后 创建该图像的实例,ubuntu 用户将没有密码“foobar”。

我可以设置密码并重启一个正在运行的实例,正确的密码将 仍然可以设置,但是在从实例制作新图像后,就没有这样的运气了。

这以前对我有用。不知道为什么它现在不起作用。这是一张 EBS 图像。

编辑:添加重现问题的确切步骤。

  • 启动公共 AMI ami-1a05fa72 的实例
  • ssh 到实例并使用sudo passwd ubuntu 设置ubuntu 的密码
  • 设置密码为foobar
  • 基于此实例创建图像
  • 根据您刚刚创建的映像启动实例
  • 通过ssh'ing到实例测试ubuntu的密码是否为foobar 作为ubuntu 并输入passwd。它会首先询问您的 当前密码。输入foobar,当这被拒绝时,你有 重现了问题。

【问题讨论】:

    标签: ubuntu amazon-web-services amazon-ec2 amazon-ami


    【解决方案1】:

    听起来不是贬义词,但是当我意识到我的 AMI 是在在我更改密码之前创建时,这种情况发生在我身上。

    如果不是这样,您可能还想修改 sshd_config 文件。使用 'sudo passwd ubuntu' 更改密码后,将以下行添加到 /etc/ssh/sshd_config:

    PasswordAuthentication yes
    

    这应该启用密码登录。重新加载你的 ssh:

    sudo reload ssh
    

    然后创建一个新的 AMI。

    【讨论】:

    • 谢谢,但我不想通过 ssh 密码登录。设置密码是为了通过 Web 应用程序进行身份验证,而不是通过 ssh。而且我确定我在创建 AMI 之前设置了密码,因为我现在已经连续多次遇到这个问题。
    • 显然 cloud-init 有问题。此 AMI 使用 cloud-init,在某些时候它必须重置密码。我还没弄清楚它的作用,我想出了一个完全不安全的解决方法,涉及 crontab 中的 @reboot 操作。幸运的是,在这种情况下,我并不关心安全性,我希望 AMI 的所有用户都知道这个特定的密码,但是对于遇到它并需要安全解决方案的任何其他人来说,问题仍然存在。
    • 啊,这是一个非常有趣的解决方法。您也应该将其发布到 AWS 论坛。不复制这些基本系统设置似乎与假设 AMI 的行为方式相反。
    【解决方案2】:

    根据星团名单上的 Hugh MacMullan 的说法,答案是:

    “查看 /etc/cloud/cloud.cfg,尤其是 'default_user' 部分。注意 'lock_passwd: True'。您可以将其更改为 False ... 或者更好的是创建一个不同的用户(比如 rlogin),默认情况下它不会在 init 上被锁定,所以你应该很高兴。”

    我将 lock_passwd 更改为 False,并且我的密码更改在重新启动后仍然存在。不需要不安全的 crontab hack。

    【讨论】:

      【解决方案3】:

      来不及回答,不过,仅供参考,

      从图像启动实例时, AWS 将禁用密码验证的根和主帐户。

      • 如果是 ubuntu [user : root,ubuntu]
      • 如果是 ami : [user : ec2-user]

      也就是说,这些账号在新启动的ec2上无法通过密码认证登录。

      但是,任何其他帐户都可以使用。所以让我们假设, 您从 ubuntu 创建一个实例,在 ssh 中设置密码身份验证是 并为ubuntu设置密码,与此同时,您为自己创建了另一个用户, 然后,您从上面配置的 ec2 映像中启动一个实例。

      那么 ubuntu 用户的密码验证将不起作用,但是,另一个用户的密码验证将起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        • 2012-03-08
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多