引导 Ubuntu 服务器的建议

引导 Ubuntu 服务器的建议

当我创建新的 Ubuntu 12.10 实例时,我通常通过手动 SSHing 到机器并编辑 sudoers 以将 NOPASSWD 放在默认用户(例如 ec2-user、azureuser 等)上来引导它们。然后我的安装脚本可以 sudo 各种命令而无需提供密码。

我对密码没有任何意见。只是当我尝试使用 bash 脚本通过 SSH 执行基于密码的 sudo 时,sudo 会抱怨没有 tty(“sudo:没有 tty 并且没有指定 askpass 程序”)。

此外,我需要它完全自动化——它不需要有人手动输入密码。

几个问题:

1) 这里的方法是否正确?特别是,在这里使用 NOPASSWD 是不是一个坏主意?我假设保护默认用户的 SSH 私钥在这里是可以的——只需将此帐户视为 root 帐户即可。

2)如果这是错误的,那么我该如何克服“没有 tty 存在”的反对意见,而不必手动输入密码?

3) 如果 NOPASSWD 没问题,那么我应该如何自动化 sudoers 编辑?看来,如果只是为了 sudo visudo 命令,我需要使用密码。

我想我可以手动完成所有工作,然后创建一个新图像,但如果可能的话,我宁愿保留基础图像,然后编写脚本。

答案1

只是一个想法,但为什么不像 一样通过基于密钥的身份验证允许通过 SSH 进行 root 访问PermitRootLogin without-password

如果您需要强大的安全设置,那么在完成基本安装后,您当然可以解决这个问题。但在我看来,在机器设置的初始引导期间,对 root 帐户设置进行基于密钥的访问的风险极小。

3) 如果 NOPASSWD 没问题,那么我应该如何自动化 sudoers 编辑?看来,如果只是为了 sudo visudo 命令,我需要使用密码。

Ubuntu 支持该includedir /etc/sudoers.d选项。因此您的初始设置非常简单。就像这样。

echo "adminuser ALL=NOPASSWD: ALL" > /etc/sudoers.d/boostrap
chmod 0400 /etc/sudoers.d/boostrap

相关内容