首页 > 虚拟化 > 用cloud-init制作的镜像root无法登陆问题
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

用cloud-init制作的镜像root无法登陆问题

自己在做CentOS6.4镜像时,cloud-init安装版本为 0.7.2 ,一切安装配置好后,glance上传完成后使用该镜像创建虚机,绑定floating ip后,用xshell登陆该虚机就出现了问题,就是root用户名输入回车后发现只能用public key公钥登陆,而不能用密码认证登陆。

进vnc控制台发现在/etc/ssh/sshd_config发现“PasswordAuthentication no” ,怪不得登陆不了。难道是做的镜像里面ssh默认都是“PasswordAuthentication no”禁止密码认证的???

回想之前做了那么多镜像也没有要修改ssh配置的。算了,还是重新修改一下镜像吧,我修改为 “PasswordAuthentication yes”然后上传到OpenStack中,创建虚机,噢,发现root还是没法用密码认证登陆,再次查看/etc/ssh/sshd_config,竟然发现“PasswordAuthentication no” !!! 奇怪了,发现我原来修改的“PasswordAuthentication yes”也不见了,而是它自己增加了一行“PasswordAuthentication no”,纠结中。。。

这时猛然想起跟有可能是cloud-init搞的鬼,在安装好cloud-init后,会生成/etc/cloud/cloud.cfg配置文件,找到该文件,就在配置文件置顶的前五行内,就赫然显示其配置限制了登陆方式:

users:
– defaults
disable_root:1
ssh_pwauth: 0

cloud-init默认配置是这样滴,ssh_pwauth 为 0 是关闭状态,就是禁止password认证。终于找到原因了,继续改镜像吧,修改为 ssh_pwauth: 1 ,重新创建虚机绑定floating ip,ssh远程登陆,root可以用密码正常登陆。 找到sshd_config配置文件,发现里面多了“PasswordAuthentication yes”,看来的确是cloud-init搞的鬼。 回想一下上次测试,莫名其妙加了“PasswordAuthentication no”也是由于cloud-init没有开启password认证搞的鬼。

不过还有一个问题,在cloud.cfg配置中,disable_root:1 这一项猜测应该是限制禁止root用户ssh远程登陆的,按理应该会在sshd_config配置文件中加上 “PermitRootLogin no”,但是在sshd_config里也没有发现这一项,而且我刚才是可以使用root远程登陆。这一点有点奇怪,难道是这个配置没有生效?

于是我手动改为 disable_root:0 尝试一下,结果依然root可以ssh远程登陆,sshd_config配置中依然是“PermitRootLogin yes” 。

这个问题有点奇怪,也可能是我把这个配置理解错了。

也有可能是cloud-init心情不好,为了做镜像保险起见,还是修改为下面这样配置吧,哪天等它心情好了还能继续让我用root登陆!!

users:
– defaults
disable_root:0
ssh_pwauth: 1

目前这个禁止root用户登陆的问题暂时不影响虚机的正常登陆,如果哪位朋友遇到过或者知道是什么原因,希望可以交流学习一下。

对了,如果不是自己做镜像,是从官方网站直接下载的,默认镜像里应该安装了cloud-init,我测试过一个官方镜像,cloud-init默认也是禁止密码登陆的,知道了是cloud-init配置的原因,就可以下载镜像后手动修改一下cloud.cfg配置,然后再自己使用。

还有如果不知道官方镜像root密码,可以按照之前介绍的使用Config Drive注入metadata修改root密码。

修改root密码:
#cloud-config
chpasswd:
list: |
root:123456
expire: False
ssh_pwauth: True


相关博文

  1. 还没有评论
评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed