您的位置:首页 > 运维架构 > Linux

Openstack使用官方ubuntu和Centos镜像

2017-11-28 17:31 134 查看

1 使用官方ubuntu镜像无法使用ssh用户名密码登录登录的问题

在创建instance的时候,选择"创建后",然后选择直接输入,输入如下代码

ubuntu

[plain] view
plain copy

#!/bin/sh    

passwd ubuntu<<EOF    

123456  

123456  

EOF

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    

Centos7

[plain] view
plain copy

#!/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/centos/.ssh/authorized_keys /root/.ssh/    

service sshd restart    

passwd centos<<EOF    

123456  

123456  

EOF   



按上面的配置后仍然无法登录:

镜像需要已经安装cloud-init软件包
以便读取创建时输入的user-data 脚本,否则脚本是无法生效的。另外,也要确保metadata server是可以正常访问的。也就是从实例中,可以访问http://169.254.169.254/latest。如果不行,可能是因为neutron dhcp-agent中没有打开独立的metadata server agent,修改配置文件,重启neturon-dhcp-agent即可。
两者缺一不可,否则输入的脚本都是无法运行的。

2 guestfish工具修改openstack官方ubuntu镜像默认用户的密码


安装guestfish

    我的环境是ubuntu 14.04

    安装:

[plain] view
plain copy

$ apt-get install libguestfs-tools  

    打开镜像:

[plain] view
plain copy

$ sudo guestfish --rw -a trusty-server-cloudimg-amd64-disk1.img  

    如有必要,请加上sudo.

    运行镜像:

[plain] view
plain copy

><fs> run  

 100% [########################################################################################################################################] 00:00  

如果这一步报错:

libguestfs:
error: /usr/bin/supermin-helper exited with error status 1.
To
see full error messages you may need to enable debugging.
See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs[/code] 
#
update-guestfs-appliance


则请退出guestfish,然后运行下面的命令。更新完后再重新进入镜像。

    列出所有的文件系统:

[plain] view
plain copy

><fs> list-filesystems   

/dev/sda1: ext4  

    挂载到根目录:

[plain] view
plain copy

><fs> mount /dev/sda1 /  

    编辑/etc/cloud/cloud.cfg文件,修改默认用户ubuntu的密码:

[html] view
plain copy

><fs> vi /etc/cloud/cloud.cfg  

    找到default_user字段

    1.把lock_passwd:True修改为:lock_passwd:false.lock_passwd默认为true,锁定密码禁用密码登陆,因此我们要改成false

    2.增加plain_text_passwd:'你要设置的密码'.例如我的:



    然后退出,将镜像上传到openstack,启动实例,就能使用用户名密码登陆了.

    设置可以ssh登录

# vi /etc/ssh/sshd.conf将PasswordAuthentication字段修改为PasswordAuthentication
yes

#
然后退出,再次启动即可

#
调整img大小qemu-img resize xxx.qcow2
60G

# 调试虚拟机,其中kvm-4是domain-name,这样子能看到启动时输出的信息,(启动时比较慢,因为有cloud_init脚本执行)例如:qemu-img
console kvm-4

3 修改Cloud image的密码的简单方法

文:https://scottlinux.com/2017/05/08/set-password-or-ssh-key-for-centos-cloud-images/

CentOS为各种不同的云环境提供cloud images,比如OpenStack,RHV,AZure,或KVM. 一般来说,是通过cloud-init工具来修改用户密码或SSH keys. 但是那似乎不太方便。
下面是一种方便的方法。

官方的CentOS的cloud image的下载地址是:

http://cloud.centos.org/centos/7/images/

第一步,安装软件libguestfs-tools

[plain] view
plain copy

sudo yum install libguestfs-tools  

或  

sudo apt install libguestfs-tools  

或  

sudo dnf install libguestfs-tools  

第二步,设定一个固定密码

[plain] view
plain copy

sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --root-password password:passw0rd  

结束。

这一步也可以设一个随机密码:

[plain] view
plain copy

sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --root-password random  

[   0.0] Examining the guest ...  

[  11.2] Setting a random seed  

[  11.2] Setting passwords  

virt-customize: Setting random password of root to 132Tfe6cfCCr8Pv8  

[  12.2] Finishing off  

这一步还可以是这样:安装或删除package,甚至同时设置自己的SSH key

[plain] view
plain copy

sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --install epel-release --ssh-inject centos:string:"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKCqX6EZIrGHoGaMII4QAqr0QC72t+Kg/c5ZIRNTMb6Q+BwzejQgjhBTXeyPnp0rfE9XI4pTxkZqAUOGSK9Bfqg= smiller@bruckner"  


4
密钥对

密钥对可以用来登录你创建的云主机实例。

为密钥对起一个你容易记住的名字,然后在提供的空白处粘贴你的SSH公钥。

可以使用ssh-keygen命令来生成SSH密钥对:

ssh-keygen -t rsa -f cloud.key


这将生成一对密钥对:一个私钥 (cloud.key)和一个公钥(cloud.key.pub)。请妥善保存好您的私钥。

创建一个云主机实例后,你使用密钥来登录实例(用户名可能会不一样,这取决你所用的镜像):

ssh -i cloud.key <username>@<instance_ip>


参考:

1 http://www.chenshake.com/openstack-mirror-and-password/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: