360SDN.COM

OpenStack 镜像修改密码方案

来源:  2019-04-30 09:45:28    评论:0点击:

现在各大linux厂商,其实已经有专门给openStack提供的镜像,不过国内的朋友,不太习惯老外做镜像的方式,经常问密码是多少。本博客提供几种修改密码方案,仅供参考。
 
前言
对OpenStack云主机来说,有以下几种方式登录:
 
SSH 密匙登录
创建时指定密码
创建后执行脚本修改密码
Horizon nova支持注入密码
默认OpenStack的Dashboard修改虚拟机的密码的功能是关闭的,你需要enable。我是使用RDO安装。
 
编辑/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py
 
# The OPENSTACK_HYPERVISOR_FEATURES settings can be used to enable optional
# services provided by hypervisors.
OPENSTACK_HYPERVISOR_FEATURES = {
    'can_set_mount_point': False,
    'can_set_password': True,
}
重启httpd服务
 
systemctl restart httpd.service
这时候你就可以看到设置管理员密码的地方,不过这个时候,你可能还是不能修改密码。你需要修改计算节点的nova.conf文件
 
[libvirt]
 
# Inject the admin password at boot time, without an agent.
# (boolean value)
#inject_password=false
inject_password=True
这样重启服务:
 
openstack-service restart nova
Cirros
这是一个大家在OpenStack测试非常喜欢使用的镜像,小于15M,测试起来非常方便。
 
官方下载地址 https://download.cirros-cloud.net/,这个镜像的用户名和密码
 
user:cirros
pass:cubswin:)
你可以在Horizon的vnc登录或者通过SSH登录。如果你通过Horizon设置密码,其实就是设置Cirros镜像的root的密码,设置完成后,你可以在控制台或者SSH,使用root和你设置的密码登录。
 
如果你希望使用秘钥,用root身份登录,那么默认是不行的,你会客户端看到提示
 
Please login as 'cirros' user, not as root
如果你使用cirros用户登录,你会发现其实root的目录下也注入的公钥,只是
 
$ sudo ls /root/.ssh/
authorized_keys
$ sudo cat /root/.ssh/authorized_keys
 
# The following ssh key was injected by Nova
command="echo Please login as \'cirros\' user, not as root; echo; sleep 10" ssh-rsa 
ofEJnEpgbTIuO1Wc5vTs/cMuPmaJ7x6dAX2vg84LkRyX1dDzvQ8nD/tYpFYnSjzrh72N7tMm76GAaR
HzMxg3uNMGVk+wXCBU/Ffm1vE1A5uQ== root@node12
在公钥里加入一行,导致root无法登录。我们可以通过Horizon提供的user data的功能,实现root登录
 
#!/bin/sh
cp -f /home/cirros/.ssh/authorized_keys /root/.ssh/
其实就是把cirros的公钥,复制到root的目录下。这时候创建出来的虚拟机就可以直接使用root登录,没有任何的遗憾。
 
Ubuntu
Ubuntu的OpenStack镜像其实做的非常不错,使用也非常广泛。
 
官方下载地址:http://cloud-images.ubuntu.com/trusty/ 我是下载qcow2格式。
 
国外的镜像制作,基本都是只能使用秘钥登录。该镜像的用户名是:ubuntu
 
你可以通过在创建虚拟机的时候设置密码,这个是root的密码,这样你可以在控制台,用root的身份和你设置的密码登录。
 
Ubuntu14.04的镜像,默认不允许root的身份登录,包括密码和秘钥。甚至把注入root的公钥都修改了
 
# cat /root/.ssh/authorized_keys 
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
command="echo 'Please login as the user \"ubuntu\" rather than the user \"root\".';
echo;sleep 10" ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQ
HzMxg3uNMGVk+wXCBU/Ffm1vE1A5uQ== root@node12
如果我们希望用root的身份,ssh登录,那么和上面镜像差不多。创建后执行脚本:
 
#!/bin/sh
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
cp -f /home/ubuntu/.ssh/authorized_keys /root/.ssh/
service ssh restart
如果你希望给ubuntu的用户设置一个密码,创建后执行脚本:
 
#!/bin/sh
passwd ubuntu<<EOF
pass
pass
EOF
用户ubuntu,就可以在控制台使用密码:pass 登录,不过这个时候,你还是无法通过ssh访问虚拟机,因为ssh默认设置是禁用密码认证,所以你需要多做点工作。
 
#!/bin/sh
passwd ubuntu<<EOF
ubuntu
ubuntu
EOF
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart
CentOS
目前CentOS官方提供CentOS 6 和CentOS 7的镜像,大家可以从官方下载 http://cloud.centos.org/centos/7/images/
 
没有压缩的是900多M,压缩过的是400多M。默认的用户名是:centos
 
目前各大发行版对镜像的定制,安全性基本都是一致的。CentOS,同样也是不允许root登录,使用密钥也是不行的。
 
如果是希望root使用密钥登录,做法和Cirros镜像基本是一样的
 
#!/bin/sh
mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.old
cp  /home/centos/.ssh/authorized_keys /root/.ssh/
镜像的ssh设置,是允许root的登录的,所以就不需要修改ssh。如果你希望root可以使用密码登录。那么你需要用脚本修改ssh设置
 
#!/bin/sh
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd
顺便也测试了一下CentOS6的镜像,好像有点问题,无法设置密码。别的都没啥问题。
 
其他方式
centos
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import binascii
message = \
"""#!/bin/bash
#modified vm's passwd
passwd root <<EOF
root
root
EOF"""
data = binascii.b2a_base64(message)[:-1]
print data
#data = base64.decodestring("""IyEvYmluL2Jhc2gKI21vZGlmaWVkIHZtJ3MgcGFzc3dkCnBhc3N3ZCByb290IDw8RU9GCmdpYW50Y29tcApnaWFudGNvbXAKRU9G""")
print data
windows03
http://www.cloudbase.it/cloud-init-for-windows-instances/
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import binascii
message = \
"""net user administrator giantcomp"""
data = binascii.b2a_base64(message)[:-1]
print data
#data = base64.decodestring("""IyEvYmluL2Jhc2gKI21vZGlmaWVkIHZtJ3MgcGFzc3dkCnBhc3N3ZCByb290IDw8RU9GCmdpYW50Y29tcApnaWFudGNvbXAKRU9G""")
print data
参考文档
http://docs.openstack.org/image-guide/content/ch_obtaining_images.html
 
https://cloudinit.readthedocs.org/en/latest/topics/examples.html
 
http://t.cn/RUaKJMi
 
https://xiexianbin.cn/openstack/2015/05/01/openstack-glance-image-download
 
https://xiexianbin.cn/openstack/2015/06/07/build-openstack-glance-image
 
http://www.cloudbase.it/cloud-init-for-windows-instances/
 
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权