引导Ubuntu服务器的build议

当我创build新的Ubuntu 12.10实例时,我通常通过手动SSH方式引导它们到机器上,并编辑sudoers以在默认用户(例如,ec2-user,azureuser等)上放置一个NOPASSWD。 然后我的安装脚本可以sudo各种命令,而不必提供密码。

我没有任何反对密码的东西。 只是当我尝试使用bash脚本通过SSH进行基于密码的sudo时,sudo抱怨没有tty(“sudo:没有tty存在,没有指定askpass程序”)。

此外,我需要这是完全自动的 – 它不应该要求有人手动input密码。

几个问题:

1)这里的方法是否正确? 特别是在这里使用NOPASSWD是一个坏主意? 我假设保护默认用户的SSH私钥在这里没有问题 – 只要把这个账户作为一个根账户就可以了。

2)如果这是错误的,那么我怎样才能克服“没有tty礼物”异议,而不必手动input密码?

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

我想我可以手动完成所有工作,然后创build一个新的图像,但是我宁愿保留基本图像,然后在可能的情况下编写脚本。

只是一个想法,但为什么不只是允许通过基于密钥的身份validationSSH的root访问,如在PermitRootLogin without-password

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

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