1 使用官方ubuntu镜像无法使用ssh用户名密码登录登录的问题
在创建instance的时候,选择"创建后",然后选择直接输入,输入如下代码
ubuntu
Centos7
按上面的配置后仍然无法登录:
镜像需要已经安装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
如有必要,请加上sudo.
运行镜像:
如果这一步报错:
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,然后运行下面的命令。更新完后再重新进入镜像。
列出所有的文件系统:
挂载到根目录:
编辑/etc/cloud/cloud.cfg文件,修改默认用户ubuntu的密码 :
找到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
第二步,设定一个固定密码
结束。
这一步也可以设一个随机密码:
这一步还可以是这样:安装或删除package,甚至同时设置自己的SSH key
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/