- 某 VPS 商提供的 VPS 只有 Debian 用户,root 默认是禁止的,通过证书登陆。
- 默认没有安装 sudo,同时即使自己装好 sudo 也会提示说 Debian 不是 sudoers
- 可以通过 su 来登陆进 root,但是需要输入密码
现在我们希望通过自动化程序,最好 python,但也可以用 shell,来实现创建 VPS,这一步一句完成了,同时配置 VPS 以及安装内容。
需要修改:
/etc/ssh/sshd_config
- root 密码
需要安装:
- 很多东西
所以基本上第一步就是需要允许 root 登陆比较方便些。可是这样的非 sudoers 的 Debian 用户设置,如何操作呢?一个一个输入密码肯定不好,有没有办法自动输入密码的?
TL;DR 主要就是想通过先用的情况下的一个 VPS,在这上面配置一些东西,包括安装软件,修改密码,修改 ssh 等等。
没用过 debian,其它几种 linux 的话,都是把用户添加到一个特定的用户组就可以了。ubuntu 是添加到 sudo 组,centOS 是添加到 wheel 组。
网上流传各种修改 /etc/sudoers 的方式,不太推荐。
还是建议通过普通帐号用 sudo,sudo 可以自己找包装上去。
写好脚本
su -c
只要输一次密码
总之你至少得输一次吧
apt-get install sudo ???
su
vi /etc/sudoers
自己加进去就是了
其实人家就是为了安全,就算别人“误”登入,不知道 root 密码也不能做太多
没人提 发 ticket 么?
与其费脑子跟程序死磕,不如试试与人交流套套近乎。说不得就能勾搭上人家 boss 给你免了服务器的费用 23333
安装 sudo 之后,把当前用户加入 sudo 组,就可以用 sudo 了,不需要手动配置 sudoers
不建议直接改 /etc/sudoers, 建议将合适的配置文件放进 /etc/sudoers.d/目录.
su root
gpasswd -a USER_NAME wheel
不要修改 sudoers 不安全
把 debian 加到 sudo 组里面就行了
发了 Tickets 了,不过这个云服务商什么都没有,不报希望可以解决
同一回复一下吧,现在的问题就是不管怎么样都需要输入一次密码:
不管是安装 用任何 apt-get install sudo 安装 sudo ;或者是很多人说的一样,加到 sudo 组;还是说的 su root
都无法避免输入一次密码。我们现在是想要通过一个 python 或者 shell 自动化这个步骤。当然如果谁能说出来把密码加在 shell scipt 里面的办法也是可以的。
原因很简单,我们第一次需要 provisioning 500 个 VPS。以后每天需要删除 + 创建不少于 50 个 VPS,如果这个简单步骤无法自动化的话,那么基本来说就无法使用了。
搜索 sudo 免密码
好奇哪家的 VPS
为了安全,我也把自己的 vps 改成这个样子,root 禁用登陆,使用普通用户登陆,并且没有 sudo 权限。
楼上的方法都可以,不过个人还是支持直接加到 wheel 组比较好。
试试 expect ?
1.sudoers 可以改成免密的,我 lapton 装 debian 第一件事就是做这个
2.仍然建议保留现在方式,服务器上还是不免密好
既然你是 500 VPS 的大用户,你有权力发 Tickets 要求服务提供商为你修改配置脚本。
嘛,一般来说服务商都会提供 API 文档让你开发自动部署脚本比如说腾讯云和阿里云的修改密码 API https://www.qcloud.com/document/api/213/1245
https://help.aliyun.com/document_detail/25503.html?spm=5176.doc25485.6.835.jWnaII
如果连 API 文档都没有的话。。。建议换一家服务商
man sudoers
搜索 password
另外,改配置要用 visudo
你们都想复杂了:
echo password | su -c script.sh
还有,这样的大客户,要求 provision 的时候带公钥真不难。大点的云服务商,比如 AWS,DO,包括 Vultr 都是可以的。
不能注入公钥的服务商,窃以为技术水平不行,不值得用。
这命令在 bash 里输入会出现 su: must be run from a terminal 错误
BTW,大客户要求定制化镜像应该很容易的
对,会有 20 楼说的那种情况。这个服务商很奇怪,注入公钥了,但是没有 sudo,所以 su 还是需要输入密码,很头疼
其实不容易,主要是因为这个服务商比较奇葩。
这些东西都没办法很好的通过一个 script 完成,尤其是 visudo 的时候系统需要提示输入密码的那个情况
唉,这个 VPS 公司太小了,感觉没人愿意搞。他们的母公司是做服务器托管的,倒是挺大,欧洲和北美可能有近 15 个数据中心。但是 VPS 这个是个新项目,没有自定义镜像,没有 Snapshot,API 的创建还是个坏的,只能开机关机什么的。
看看 vps 是否默认有安装 expect
或者尝试下 apt-get install expect 看需不需要密码,如果不需要的话,那一切就好办,需要的话就真无解了
我在 centos 上测试没有问题
试试 ssh -tt 还有 getty
terminal 的话总是有办法造的
这种自动化交互,我第一时间想到的就是
expect
这么大的量,为什么不定制 VPS 模版镜像呢
LANG=C expect -c 'spawn su -c /script; expect "Password:"; send "yourpass\n"; interact'
su -i
输入密码
然后就变成 root 了
再 apt-get install sudo
说错了,直接 su 这个命令就行
楼上的朋友们是多久没用 iso 装 Debian 8 了
老早以前他默认就不带 sudo 了,都得自己装,服务商的话得看自己的模板优化,比如 Google Cloud 还有 Linode 这些都是会给你装好的,要是傻乎乎的什么都没有装那自然就没了
楼主的情况应该是,你用 ssh key 登陆,但是没有给你 debian 默认用户的密码,所以你可以去控制面板找找有没有给你 debian 默认用户的密码,没有的话就去怼客服吧,要他们改模板去。
或者还有一种迂回的方案,要是控制台里你可以找到 root 密码,那么用 console 进去,然后 root 登陆安装下 sudo 呗
问题是他有 500 台机器要配置。
目测他的 vps 没有装 expect,在没有 expect 的情况下 如何配置能自动输密码的自动化脚本
所以应该找服务商去解决而不是来 V2EX 提问
用 python ssh 登录,模拟人机交互。https://my.oschina.net/u/142602/blog/191822
redhat 工程师配出来的 debian/ubuntu 就这样……
装好 sudo 之后,可以配置某个(些)用户免密码使用 sudo。不在电脑前,不记得具体的格式了。在配置时要加一个 NOPASS 之类的参数。
这个服务商非常高傲,基本来说不管。主要 VPS 也是他们的副业可能。
感谢所有回复,已经基本解决了,最后写个脚本然后一行 python 代码解决,更新一些 python 的代码就可以完全自动化了,谢谢个人。具体办法已经 Append 欢迎借鉴