OpenStack 镜像制作之cloud-init
| Contents [hide] |
|---|
背景
前面我们制作了镜像,并且制作的镜像支持了硬盘的自定义。但是还不够,我们要镜像支持密码注入,支持密钥登录。并且2种登录方式都支持(密钥登录,密码登录)
密钥登录
密钥登录的原理
我们在linux中使用ssh-keygen命令,将在当前用户的默认路径生成.ssh文件夹,并且在该文件夹下存在id_rsa和id_rsa.pub文件,其中id_rsa.pub就是公钥文件,而id_rsa为私钥文件,我们将id_rsa传入到客户端机器,并且按照/etc/ssh/sshd_config中文件的#AuthorizedKeysFile .ssh/authorized_keys 内容,将id_rsa.pub改为id_rsa,那么在客户端使用私钥id_rsa时就可以不用密码登录了。
openstack的私钥
openstack也是使用该原理,生成一对钥匙文件,将公钥注入到虚拟机里的默认用的.ssh/目录下,在dashboard界面下载到私钥文件,在创建虚拟机的时候调用注入key_file接口,就可以实现无密码登录了。
密码注入 =
对于openstack的虚拟实例来说,所谓注入,是将我们输入的密码在计算节点使用nova-compute做加密处理后生成一对类似/etc/passwd和/etc/shadow的内容的字符串,然后使用vfs类型数据对创建的image进行数据替换。达到密码修改的目的。
实际遇到的情况
密码注入后使用ssh不能登陆,使用证书登录后查看/var/log/secure内容也显示密码不正确。另外证书登录也不是想要的root用户,而提示是cloud-user.即不满足使用root用户密码登录,不满足使用root密钥登录
解决办法
密钥登录:主要原因是我们使用cloud-init的配置文件中配置了默认用户为cloud-user,所以在注入密钥的时候也注入到了cloud-user
system_info:
distro: rhel
default_user:
name: cloud-user
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
将name:cloud-user修改为name:root,则可以实现用户以root用户密钥登录。
密码root登录
在完成密钥登录后,注入密码方式始终不能登录。日志跟踪,将计算节点的/usr/lib/python/site-package/nova/virt/下的打印也加上:
<0>Oct 17 05:53:22 node-12 ?182>nova-nova.virt.disk.api INFO: admin_pass:root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
<0>Oct 17 05:53:22 node-12 ?182>nova-nova.virt.disk.api INFO: admin_pass:root:$1$CaW09rpP$QP631qFmr7vRL.D95sS4C/:16360:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
vcsa:!!:16357::::::
saslauth:!!:16357::::::
postfix:!!:16357::::::
sshd:!!:16357::::::
发现我们的密钥生成为一组文件替换到镜像中的密码文件,生成虚拟机后查看/etc/shadow的密码也差不多相同
admin_pass:root:!!$1$CaW09rpP$QP631qFmr7vRL.D95sS4C/:16360:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
vcsa:!!:16357::::::
saslauth:!!:16357::::::
postfix:!!:16357::::::
sshd:!!:16357::::::
主要不同是root:后面多了2个!!,表示使用了passwd -l root,将root用户锁定了。 分析应该是cloud-init在启动后做了锁定的工作,参阅cloud-init配置文件,可以看到配置文件中加上lock_passwd:False就可以了
OpenStack 镜像制作之cloud-init的更多相关文章
- OpenStack 镜像制作
Contents [hide] 1 Centos6.5 img制作 1.1 基础环境安装 1.2 下载或从本地上传系统镜像 1.3 启动服务 1.4 建立镜像文件 1.5 通过virt-install ...
- openStack镜像制作
参考链接: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/OpenStack/page/Creating ...
- OpenStack镜像制作-CentOS
云平台中镜像还是很重要的,提供各种定制化的镜像使得用户体验更好. 最开始玩OpenStack的时候用的是安装文档中提到的cirros,其密码cubswin:) 刚开始感觉很怪,现在已经可以随手打出.p ...
- openstack镜像制作思路、指导及问题总结
一.思路就4步:1.创建镜像文件2.用nova-compute自带的kvm,启动.iso文件,用vncviewer完成OS的安装过程3.OS安装完毕,停止虚拟机,kvm重启镜像,安装必要的软件4.后续 ...
- openStack 镜像制作,镜像裁剪一般步骤
镜像制作一般裁剪步骤 1, linux系统安装CentOs/RHEL Desktop桌面系统,分区划分但分区/挂载点.设置Selinux=disabled关闭iptables安装cloud-init[ ...
- 云计算---openstack镜像制作
一:本地部署KVM 1.安装KVM 1.1安装须知 查看CPU是否支持kvm完全虚拟机. [root@LINUX ~]# grep "flags" /proc/cpuinfofla ...
- 云计算---openstack镜像制作详解
一:本地部署KVM 1.安装KVM 1.1安装须知 查看CPU是否支持kvm完全虚拟机. [root@LINUX ~]# grep "flags" /proc/cpuinfofla ...
- openstack镜像制作centos7
1,找一台宿主机安装kvm并检查是否支持虚拟化,这里我用的是vmware来做宿主机 egrep '(vmx|svm)' /proc/cpuinfo 然后安装kvm: yum install epel- ...
- OpenStack镜像制作笔记 --以windows8.1-amd64为例
by hyc 目录 1.下载win8_64位的iso文件 2.下载对应电脑的vnc 3.下载Xshell软件 4.连接成功后,在Xshell下安装软件包 5.下载FileZilla Client软件 ...
随机推荐
- Asset Store
Asset Store 是用来供Unity开发者将自己的插件拿出来供大家有偿使用的一个平台. 报错信息: failed to import package with error cannot impo ...
- mysql导入导出
1.导入整个库 进入数据库,source 进去的语句等同于直接连接数据库后数据的语句 >source /var/www/test.sql 或者 sy$ mysql -uroot -p 数据库名( ...
- 开始了ecshop
一个多星期前开始接触ecshop,突然决定要用它来做网站,于是从网上找各种手册与视频,联系官网客服,然后知道官网一共提供三种类型的服务,一种是ecshop授权,不包含任何技术支持,第二种是易开店的标准 ...
- 给ul中的li添加事件的多种方法
给ul中的li添加事件的多种方法 这是一个常见,而且典型的前端面试题 <ul> <li>11111</li> <li>22222</li> ...
- C#中派生类调用基类构造函数用法分析
这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数例如: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- Interview Check If n Is A Perfect Square
Check if a given number is a perfect square with only addition or substraction operation. eg. 25 ret ...
- JavaScript:JavaScript中常见获取对象元素的方法
介绍: javascript中常见的3种获取元素的方法,分别是通过元素ID.通过标签名字和通过类名字来获取 操作如下: 1.getElementById DOM提供了一个名为getElementByI ...
- 由单例模式学到:lock锁
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. lock (xxx) { // Critical code section. } lock 关键字可确保当一 ...
- div元素呈圆环排列
<style> .path { width: 300px; height: 300px; padding: 20px; border-radius: 50%; background: rg ...
- uwsgi + nigix + django的样式展示
编辑添加黄色部分 是你的项目目录 在你的项目目录写的静态文件 内的样式调用的是static 如果不是 请改名 [root@ayibang-server s10day11]# vim /etc/ng ...