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软件 ...
随机推荐
- Estimating Project Costs
The Wideman Comparative Glossary of Common Project Management Terms describes estimating cost as, &q ...
- python echo服务器和客户端(客户端可以用telnet之类的)
发上来记录一下,省得下次再写一遍 服务器:server.py #-*- coding:utf-8 -*- from SocketServer import TCPServer, BaseRequest ...
- Linux下获取公网IP地址
curl http://members.3322.org/dyndns/getipcurl http://ip.6655.com/ip.aspx
- 微信JS SDK Demo
微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/ ...
- php 远程下载木马
function dlfile($file_url, $save_to) { $content = file_get_contents($file_url); file_put_contents($s ...
- 零售业数据分析的媒介——BI工具
当你需要从一堆复杂庞大的数据中分析出有用的信息和结论的时,想必你一定觉得力不从心:数据的冗余使得你分析起来困难重重,怎么办呢?今天我们就来讲一下使数据分析变得简单有效的“手段”. 对于当今的中国零售行 ...
- Android --ListView分页
参考博客:Android ListView分页加载(服务端+android端)Demo 监听OnScrollListener事件 class OnListScrollListener implemen ...
- ISymbol
public void Draw (IGeometry Geometry); public void QueryBoundary ( int hDC, ITransformation ...
- python使用zlib实现压缩与解压字符串
命令 字符串:使用zlib.compress可以压缩字符串.使用zlib.decompress可以解压字符串. 数据流:压缩:compressobj,解压:decompressobj 案例 >& ...
- UITableView + UISearchBar 实现搜索功能
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...