Openstack使用官方ubuntu和Centos镜像

时间:2024-03-25 13:26:25

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

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

ubuntu

[plain] view plain copy
  1. #!/bin/sh    
  2. passwd ubuntu<<EOF    
  3. 123456  
  4. 123456  
  5. EOF
  6. sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config    
  7. sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config    
  8. cp -f /home/ubuntu/.ssh/authorized_keys /root/.ssh/    
  9. service ssh restart    

Centos7

[plain] view plain copy
  1. #!/bin/sh    
  2. sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config    
  3. sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config    
  4. cp -f /home/centos/.ssh/authorized_keys /root/.ssh/    
  5. service sshd restart    
  6. passwd centos<<EOF    
  7. 123456  
  8. 123456  
  9. EOF   

Openstack使用官方ubuntu和Centos镜像

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

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



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

安装guestfish

    我的环境是ubuntu 14.04
    安装:
[plain] view plain copy
  1. $ apt-get install libguestfs-tools  
    打开镜像:

[plain] view plain copy
  1. $ sudo guestfish --rw -a trusty-server-cloudimg-amd64-disk1.img  
    如有必要,请加上sudo.

    运行镜像:

[plain] view plain copy
  1. ><fs> run  
  2.  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
# update-guestfs-appliance

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

    列出所有的文件系统:

[plain] view plain copy
  1. ><fs> list-filesystems   
  2. /dev/sda1: ext4  

    挂载到根目录:

[plain] view plain copy
  1. ><fs> mount /dev/sda1 /  
    编辑/etc/cloud/cloud.cfg文件,修改默认用户ubuntu的密码:

[html] view plain copy
  1. ><fs> vi /etc/cloud/cloud.cfg  
    找到default_user字段

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

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

Openstack使用官方ubuntu和Centos镜像
    然后退出,将镜像上传到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



修改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
  1. sudo yum install libguestfs-tools  
  2. 或  
  3. sudo apt install libguestfs-tools  
  4. 或  
  5. sudo dnf install libguestfs-tools  

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

[plain] view plain copy
  1. sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --root-password password:passw0rd  

结束。

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

[plain] view plain copy
  1. sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --root-password random  
  2. [   0.0] Examining the guest ...  
  3. [  11.2] Setting a random seed  
  4. [  11.2] Setting passwords  
  5. virt-customize: Setting random password of root to 132Tfe6cfCCr8Pv8  
  6. [  12.2] Finishing off  

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

[plain] view plain copy
  1. 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= [email protected]"  

4 **对

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

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

可以使用ssh-******命令来生成SSH**对:

ssh-****** -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/