1 前言
本文主要讲解如何修改openstack中镜像的密码以及开启镜像的ssh登录。
openstack中的镜像登录方式主要有以下几种:
1)openstack的VNC终端密码登录;
2)ssh使用密匙登录;
3)ssh使用密码登录。
除了密匙登录其他两种都需要密码,而一般的镜像初始状态是不能使用密码登录或者说密码未知的,因此需要对镜像进行处理,处理方法有以下几种:
1)通过openstack的实例创建执行脚本修改;
2)通过直接修改镜像加入初始密码。
多数的系统镜像都加入了普通用户通过sudo su
切换成root用户,原因是/etc/sudoers
加入的%sudo ALL=(ALL:ALL) ALL
。
2 镜像处理介绍
2.1 cirros
cirros镜像是目前openstack中测试使用非常广泛的镜像,体积较小,易于使用,下载地址:https://download.cirros-cloud.net/
cirros 0.3.5的镜像账号密码为
1 | user:cirros |
cirros 0.4.0的账号密码为
1 | user:cirros |
不同版本的cirros的镜像密码可能不同,但是在控制台日志中都会显示,同时该镜像也默认开启了ssh登录,可以使用账号密码登录。如无法登录记得查看镜像使用的安全组是否开始ssh访问权限
登录之后使用sudo su
切换成root用户,若想直接使用root用户登录,需要拷贝密钥或者修改root用户密码,拷贝密钥的命令为:
1 | cp -f /home/cirros/.ssh/authorized_keys /root/.ssh/ |
2.2 ubuntu镜像
ubuntu系统镜像的官方下载地址为:http://cloud-images.ubuntu.com
trusty为ubuntu 14,xenial为ubuntu 16,根据自己的喜好下载镜像。
2.2.1 修改镜像
使用guestfish工具直接修改镜像[1],安装guestfish工具
1 | sudo apt-get install libguestfs-tools -y |
打开镜像:
1 | sudo guestfish --rw -a xenial-server-cloudimg-amd64-disk1.img |
挂载文件系统等操作如下图所示:
打开/etc/cloud/cloud.cfg
后修改一下内容:
1)增加ssh密码登录
将disable_root
的值设为false
即可允许root登录,增加ssh_pwauth: true
即可允许ssh密码登录。
2)增加默认用户ubuntu的密码
将lock_passwd
设为false
允许VNC终端密码登录,同时添加plain_text_passwd: "ubuntu"
将默认用户的密码设为ubuntu
。
最后,建议在/etc/issue
中加入配置的密码,方便后续的人查看默认用户密码。根据参考链接[2]还可以修改/etc/passwd
的第一行root:x:...
为root::...
达到使用root用户的VNC免密登录,但是如果是ssh登录的话,需要在/etc/ssh/sshd_config
中将PermitEmptyPasswords no
设置为PermitEmptyPasswords yes
。
2.2.2 通过openstack用户数据修改密码
如果不想修改镜像也可以在openstack启动实例时通过导入用户数据的方式来修改密码,加入修改脚本如下:
1 | !/bin/sh |
如下图所示加入上述脚本,不同的openstack版本此处有所不同,依具体版本操作。
此外还有修改openstack的nova.conf和dashboard配置的方式来加入修改密码选项[3],由于openstack的版本修改该种方式不一定可行,视具体版本处理。
2.2.3 通过cloud-init方式修改密码
cloud-init(简称ci)在AWS、Openstack和Cloudstack上都有使用,也算是事实上的云主机元数据管理标准。通过cloud-init能够对虚拟机实例进行初始化配置,当然也能修改镜像的密码。
1 | cloud-config |
启动后的实例可以直接通过修改后的账号密码登录
2.3 centos镜像
centos官方的镜像地址为:http://cloud.centos.org/centos/7/images/
centos的镜像默认用户是”centos”,处理方式和ubuntu一样,可以通过guestfish或者在创建实例时导入脚本。
同样是使用guetsfish打开镜像然后修改/etc/cloud/cloud.cfg
文件,如下图所示:
【参考链接】
2)密码修改