1 使用官方ubuntu镜像无法使用ssh用户名密码登录登录的问题
在创建instance的时候,选择"创建后",然后选择直接输入,输入如下代码
ubuntu
- #!/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
- #!/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
- $ apt-get install libguestfs-tools
- $ sudo guestfish --rw -a trusty-server-cloudimg-amd64-disk1.img
运行镜像:
- ><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
#
update-guestfs-appliance
则请退出guestfish,然后运行下面的命令。更新完后再重新进入镜像。
列出所有的文件系统:
- ><fs> list-filesystems
- /dev/sda1: ext4
挂载到根目录:
- ><fs> mount /dev/sda1 /
- ><fs> vi /etc/cloud/cloud.cfg
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
- sudo yum install libguestfs-tools
- 或
- sudo apt install libguestfs-tools
- 或
- sudo dnf install libguestfs-tools
第二步,设定一个固定密码
- sudo virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --root-password password:passw0rd
结束。
这一步也可以设一个随机密码:
- 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
- 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/