如何将SSH密钥添加到qcow2 Linux云镜像
时间:2019-11-20 08:53:40 来源:igfitidea点击:
如何使用virt-sysprep将SSH密钥添加到Linux qcow2云镜像中?
我下载了各种qcow2云镜像(CentOS/FreeBSD/Ubuntu)。
如何使用virt-sysprep为这些云镜像设置公共ssh密钥?
如何定制云镜像,使得用它创建虚拟机时不需要密码即可登录?
安装virt-sysprep
在Debian或Ubuntu Linux中使用apt-get命令/apt命令安装virt-sysprep:
$ sudo apt install libguestfs-tools
在CentOS/RHEL/Oracle/Scientific Linux中,使用yum命令安装:
$ sudo yum install libguestfs-tools
在Fedora Linux中,使用dnf命令安装
$ sudo dnf install libguestfs-tools
下载qcow2格式的云镜像
现在对应操作系统的镜像
- CentOS 7
- CentOS 6.x
- Debian 8.x
- Debian 9.x
- Ubuntu 16.04 LTS
- FreeBSD 11.x
- openSUSE/SLES
- AWS Linux
- RHEL 7(仅限订阅)
- RHEL 6(仅限订阅)
- SLES(仅限订阅)
这里,我们使用wget命令下载CentOS 7镜像:
$ wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
使用xz命令解压缩:
$ xz -v -d CentOS-7-x86_64-GenericCloud.qcow2.xz
设置ssh密钥
给镜像注入ssh密钥,这样用户就可以无需提供密码,直接ssh登录。
用户必须是在虚拟机系统中存在的。
在CentOS7中,有一个centos用户:
$ sudo virt-sysprep -a CentOS-7-x86_64-GenericCloud.qcow2 \ --ssh-inject centos:file:/home/Hyman/.ssh/id_rsa.pub
其中
--ssh-inject centos:file:/home/Hyman/.ssh/id_rsa.pub
:从id_rsa.pub读取ssh密钥。
也可以创建一个新用户Hyman并添加ssh-key,如下所示:
$ sudo virt-sysprep -a CentOS-7-x86_64-GenericCloud.qcow2 \ --run-command 'useradd Hyman' \ --ssh-inject Hyman:file:/home/Hyman/.ssh/id_rsa.pub
当我们用这个qcow2创建新的虚拟机时,不需要使用密码就可以登录。
使用CentOS-7-x86_64-GenericCloud-1503.qcow2镜像创建新的虚拟机VM
语法为:
$ virt-install --import \ --name centos7-vm1 \ --memory 1024 \ --vcpus 2 \ --cpu host \ --disk path=/var/lib/libvirt/images/centos7.qcow2,size=10,bus=virtio,format=qcow \ --os-type=linux \ --os-variant=centos7.0 \ --graphics spice \ --noautoconsole \ --disk /home/Hyman/modifyisoimages/CentOS-7-x86_64-GenericCloud.qcow2
测试
首先查看虚拟机的ip
$ virsh net-list $ virsh net-dhcp-leases default
使用ssh命令免密码登录:
$ ssh Hyman@vms-ip-address-here