银色的细雨敲打着充满叹息的大地
起起伏伏的声线,努力表达着自己心中那份苦涩的温柔
唯美的风景被交替的四季驱使, 无法坚持住自己最美丽的样子
守望着那些看不见的星辰,那些消失了的宇宙。该以什么之名,幻想出一种怎样的梦境?
不管是清晰还是模糊,不管是胸有成竹还是力不从心。诞生于这个世界的意义,应从当下开始去创造
心中的启明星,会在静谧中,开始自己璀璨亦朦胧的闪耀
[步骤] KVM 虚拟机模板的创建 (openSUSE Leap 15 版)
注意:
在创建 KVM 虚拟机之前要先安装 KVM 并创建 KVM 虚拟网络
镜像准备:
在 openSUSE 官网上下载安装系统所需要的镜像:
https://software.opensuse.org/distributions/leap
正文:
步骤一:理解创建 KVM 虚拟机模板的目的
主要用于批量克隆出新的 KVM 机器,节约创建新虚拟机的时间
步骤二:为这个虚拟机创建硬盘文件
1.1 创建硬盘文件
(只在真机上执行以下步骤)
# qemu-img create -f qcow2 /var/lib/libvirt/images/template_opensuse_leap_15_10g.qcow2 10G
(补充:这里以创建 10G 大小的 template_opensuse_leap_15_10g.qcow2 硬盘文件为例)
1.2 确认硬盘文件已创建
(只在真机上执行以下步骤)
# ls /var/lib/libvirt/images/ | grep template_opensuse_leap_15_10g.qcow2
(补充:这里以确认 template_opensuse_leap_15_10g.qcow2 硬盘文件为例)
步骤三:使用 KVM 和刚刚创建的硬盘文件新安装一台虚拟机
3.1 启动 KVM 的 virt-manager
(只在真机上执行以下步骤)
# virt-manager
3.2 在 virt-manager 上的左上角点击文件之后 “点击新建虚拟机”
(只在真机上执行以下步骤)
(步骤略)
3.2.1 选择以本地安装介质的方式安装系统
(只在真机上执行以下步骤)

3.2.2 选择安装系统的系统镜像
(只在真机上执行以下步骤)

(补充:这里以使用 openSUSE-Leap-15.2-DVD-x86_64.iso 系统镜像为例)
3.2.3 设置内存大小和 CPU 核心数
(只在真机上执行以下步骤)

(补充:这里以设置 2048 MiB 内容和 2 核 CPU 为例)
3.2.4 选择用刚刚创建的硬盘文件来安装系统
(只在真机上执行以下步骤)

(补充:这里以使用 template_opensuse_leap_15_10g.qcow2 硬盘文件为例)
3.2.5 给虚拟机命名并选择虚拟网络
(只在真机上执行以下步骤)
(注意:虚拟网络必须提前创建好)

(补充:这里以将虚拟机命名为 template_opensuse_leap_15_10g 并使用 0 网络为例)
3.2.6 开始安装系统
(只在真机上执行以下步骤)

3.2.7 进入 “Language, Keyboard and License Agreement” 后选择系统语言,再点击 “Next”
(只在真机上执行以下步骤)

3.2.8 当出现 “Activate online repositories now?” 时,点击 “No”
(只在真机上执行以下步骤)

3.2.9 进入 “System Role” 后选择 “Server”,再点击 “Next”
(只在真机上执行以下步骤)

3.2.10 进入 “Suggested Partitioning” 后点击 “Guided Setup”
(只在真机上执行以下步骤)

3.2.11 进入 “Partitioning Scheme” 后点击 “Next”
(只在真机上执行以下步骤)

3.2.12 进入 “Filesystem Options” 后 “File System Type“ 选择 “XFS”,再点击 “Next”
(只在真机上执行以下步骤)

3.2.13 回到 “Suggested Partitioning” 后点击 “Next”
(只在真机上执行以下步骤)

3.2.14 进入 “Clock and Time Zone” 后选择时区,再点击 “Next”
(只在真机上执行以下步骤)

3.2.15 进入 “Local User” 后选择 “Skip User Creation” 并点击 “Next”
(只在真机上执行以下步骤)

3.2.16 进入 “Authentication for the System Administrator “root”” 后给 root 设置密码,再点击 “Next”
(只在真机上执行以下步骤)

3.2.17 如果出现 “YaST2 The password is too simple” 则点击 “Yes”
(只在真机上执行以下步骤)

3.2.18 进入 “Installation Settings” 后点击 “Next”
(只在真机上执行以下步骤)

3.2.19 当出现 “Confirm Installation” 时点击 “Install”
(只在真机上执行以下步骤)

3.2.20 当出现 “The system will reboot now…” 时,点击 “Ok”
(只在真机上执行以下步骤)

3.2.21 在安装系统的过程中需要注意的内容总结
(只在真机上执行以下步骤)
1) 一定要使用刚刚创建的 template_opensuse_leap_15_10g.qcow2 作为安装虚拟机的硬件文件
2) 虚拟机网络 “0” 要提前创建好
3) 只分一个分区,只设置一个挂载点挂载到根 “/”,使用标准硬盘,硬盘格式是 XFS
4) 选择最小化安装系统
步骤四:进入新创建虚拟机修改配置
4.1 添加 Console 配置
4.1.1 修改 grub 内核配置文件
(只在虚拟机上执行以下步骤)
# vi /etc/default/grub
将全部内容修改如下:
# If you change this file, run 'grub2-mkconfig -o /boot/grub2/grub.cfg' afterwards to update
# /boot/grub2/grub.cfg.
# Uncomment to set your own custom distributor. If you leave it unset or empty, the default
# policy is to determine the value from /etc/os-release
GRUB_DISTRIBUTOR=
GRUB_DEFAULT=saved
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=8
GRUB_CMDLINE_LINUX_DEFAULT="splash=silent mitigations=auto quiet"
GRUB_SERIAL_COMMAND="serial --unit=1 --speed=115200"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
GRUB_DISABLE_RECOVERY="true"
# Uncomment to automatically save last booted menu entry in GRUB2 environment
# variable `saved_entry'
# GRUB_SAVEDEFAULT="true"
#Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
# GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
#Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL="gfxterm"
# The resolution used on graphical terminal
#note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="auto"
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# GRUB_DISABLE_LINUX_UUID=true
#Uncomment to disable generation of recovery mode menu entries
# GRUB_DISABLE_RECOVERY="true"
#Uncomment to get a beep at grub start
# GRUB_INIT_TUNE="480 440 1"
GRUB_BACKGROUND=
GRUB_THEME=/boot/grub2/themes/openSUSE/theme.txt
SUSE_BTRFS_SNAPSHOT_BOOTING="true"
GRUB_DISABLE_OS_PROBER="false"
GRUB_ENABLE_CRYPTODISK="n"
GRUB_CMDLINE_XEN_DEFAULT="vga=gfx-1024x768x16"
4.1.2 使修改的 grub 内核配置生效
(只在虚拟机上执行以下步骤)
# grub2-mkconfig -o grub
4.2 将系统自动挂载的硬盘从使用 uuid 换成硬件路径
4.2.1 显示根 “/” 分区的 UUID
(只在虚拟机上执行以下步骤)
# blkid
/dev/vda1: UUID="53ee2f87-89b8-4cd7-a4dc-0957d28f4831" TYPE="xfs" PARTUUID="3d8377ef-01"
(补充:这里的 UUID 是: 53ee2f87-89b8-4cd7-a4dc-0957d28f4831)
4.2.2 在自动挂载文件里将根 “/” 分区的 UUID 换成硬件路径
(只在虚拟机上执行以下步骤)
# vi /etc/fstab
将以下内容:
......
UUID=53ee2f87-89b8-4cd7-a4dc-0957d28f4831 / xfs defaults 0 0
(补充:这里的 UUID 是: 53ee2f87-89b8-4cd7-a4dc-0957d28f4831)
修改为:
......
/dev/vda1 / xfs defaults 0 0
4.3 删除不用的软件
(只在虚拟机上执行以下步骤)
# zypper -n rm firewalld-*
4.4 进行分区扩展
4.4.1 安装分区扩展软件
(只在虚拟机上执行以下步骤)
# zypper -n in growpart
4.4.2 设置开机自动扩容根 “/” 目录
4.4.2.1 创建开机自动扩容根 “/” 目录的配置文件
# vim /etc/init.d/after.local
创建以下内容:
/usr/bin/growpart /dev/sda1
/usr/sbin/xfs_growfs /
4.4.2.2 给开机自启配置文件相应的权限
# chmod 755 /etc/init.d/after.local
4.5 只使用本地软件源(选做)
4.5.1 禁用所有软件源(选做)
(只在虚拟机上执行以下步骤)
# zypper mr -da
4.5.2 添加本地软件源(选做)
(只在虚拟机上执行以下步骤)
# zypper ar -fcg http://10.0.0.254/openSUSE-Leap-15/ lan
(注意: http://10.0.0.254/openSUSE-Leap-15/ 需要根据真实环境的情况进行更改)
4.5.3 添加本地软件源(选做)
(只在虚拟机上执行以下步骤)
# zypper ref
4.6 修改虚拟机系统的名称
(只在虚拟机上执行以下步骤)
# hostnamectl set-hostname template_opensuse_leap_15_10g
4.7 启用 serial 服务实现通过 virsh console 命令控制虚拟机
(只在虚拟机上执行以下步骤)
# systemctl start serial-getty@ttyS0
# systemctl enable serial-getty@ttyS0
4.8 清除虚拟系统的历史命令
(只在虚拟机上执行以下步骤)
# history -c
4.9 关闭虚拟机
(只在虚拟机上执行以下步骤)
# poweroff
步骤五:修改新创建的虚拟机配置文件
删除配置文件里 cdrom 相关的部分
# vim /etc/libvirt/qemu/template_opensuse_leap_15_10g.xml
删除以下内容:
......
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/test/iso/openSUSE-Leap-15.2-DVD-x86_64.iso'/>
<target dev='sda' bus='sata'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
......
步骤六:此时就可以将此虚拟机的硬件文件作为模板进行批量克隆虚拟机了
(只在真机上执行以下步骤)
(步骤略)
[工具] Shell 批量设置官方软件源 (openSUSE Leap 15.2 版)
介绍
基本信息
作者:朱明宇
名称:批量设置官方软件源(openSUSE 版)
作用:批量设置官方软件源(openSUSE 版)
使用方法
1. 服务器清单 $add_repo_servers_list.txt 每个服务器名占用 1 行,并和此脚本放在同一目录下
2. 在此脚本的分割线内写入相应的内容
3. 给此脚本添加执行权限
4. 执行此脚本
脚本分割线里的变量
add_repo_servers_list.txt #指定存放要设置官方软件源的文件
注意
1. 此脚本执行前必须要先保证执行此脚本的用户能无密码 ssh 远程这些远程服务器
2. 服务器的系统需要是 openSUSE 15.2 版本
3. 服务器系统要配置好可用的软件源(最好是软件数量最多的官方版本)
4. 这些远程服务器要能够连接外网
脚本
#!/bin/bash
####################### Separator ########################
add_repo_servers_list.txt
####################### Separator ########################
cat add_repo_servers_list.txt
read -p "will add opensuse_leap_15.2 repo please input y " a
echo $a
if [ "$a" != "y" ];then
echo "you don't agree so exit now"
exit
fi
for i in `awk '{print $1}' add_repo_servers_list.txt`
do
ssh $i '
sudo -u root su - root -c "zypper mr -da"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/distribution/leap/15.2/repo/oss/ OpenSUSE_Leap_152_x64_update-oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/distribution/leap/15.2/repo/non-oss/ OpenSUSE_Leap_152_x64_update-non-oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/update/leap/15.2/oss/ OpenSUSE_Leap_152_x64_oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/update/leap/15.2/non-oss/ OpenSUSE_Leap_152_x64_non-oss"
sudo -u root su - root -c "zypper ref"
done
[实验] Linux SSH 内网穿透
步骤一:规划拓扑
1.1 服务器列表
客户端电脑
外网服务器
内网服务器
1.2 拓扑图
客户端电脑 外网服务器 内网服务器
1.3 拓扑图简介
内网服务器建立到外网服务器的 SSH 通道
客户端电脑通过 SSH 外网服务器连接到内网服务器
内网服务器就算没有公网 IP 地址也能被 SSH 上
步骤二:系统环境要求
1) 所有服务器的系统都需要是 Linux 版本
2) 所有服务器都要关闭防火墙
3) 内网服务器要能够 ping 通外网服务器
4) 客户端电脑要能够 ping 通外网服务器
步骤三:创建用于 SSH 内网穿透的用户
3.1 创建用于 SSH 内网穿透的用户
(分别在内网服务器和外网服务器上执行以下步骤)
# useradd <user for intranet penetration>
3.2 给用于 SSH 内网穿透的用户设置密码
(分别在内网服务器和外网服务器上执行以下步骤)
# passwd <user for intranet penetration>
步骤四:创建用于内 SSH 内网穿透的 SSH 密钥
4.1 进入到用户
(分别在内网服务器和外网服务器上执行以下步骤)
# su - <user for intranet penetration>
4.2 创建用于内 SSH 内网穿透的 SSH 密钥
(分别在内网服务器和外网服务器上执行以下步骤)
$ ssh-keygen
4.3 退出用户
(分别在内网服务器和外网服务器上执行以下步骤)
$ exit
步骤五:让内网服务器可以无密码访问外网服务器
5.1 进入到用户
(只在内网服务器上执行以下步骤)
# su - <user for intranet penetration>
5.2 将内网服务器的公钥拷贝到外网服务器
(只在内网服务器上执行以下步骤)
$ ssh-copy-id <IP address of Internet server>
5.3 退出用户
(只在内网服务器上执行以下步骤)
$ exit
步骤六:让外网服务器可以无密码访问自己
6.1 进入到用户
(只在外网服务器上执行以下步骤)
# su - <user for intranet penetration>
6.2 将内网服务器的公钥拷贝到外网服务器
(只在外网服务器上执行以下步骤)
$ ssh-copy-id 127.0.0.1
6.3 退出用户
(只在外网服务器上执行以下步骤)
$ exit
步骤七:实现内网服务器到外网服务器的 SSH 内网穿透
7.1 实现内网服务器到外网服务器的 SSH 通道
# su - <user for intranet penetration>
$ ssh -X -fCNR 11000:localhost:22 <IP address of Internet server>
(补充:这里以使用用于内网穿透的用户将内网服务器的 22 端口影射到外网服务器的 11000 端口为例)
(
注意:如果在内网服务器和外网服务器上创建的用于 SSH 内网穿透的用户名称不一样,则需要在最后 SSH 时添加上外网服务器上用于 SSH 的用户名
# su - <user for intranet penetration>
$ ssh -X -fCNR 11000:localhost:22 <user for intranet penetration>@<IP address of Internet server>
)
或者:
# ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of Internet server>" &> /dev/null || su - <user for intranet penetration> -c 'ssh -X -fCNR 11000:localhost:22 <IP address of Internet server>'
(
注意:如果在内网服务器和外网服务器上创建的用于 SSH 内网穿透的用户名称不一样,则需要在最后 SSH 时添加上外网服务器上用于 SSH 的用户名
# ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of Internet server>" &> /dev/null || su - <user for intranet penetration> -c 'ssh -X -fCNR 11000:localhost:22 <user for intranet penetration>@<IP address of Internet server>'
)
(补充:这里以使用用于内网穿透的用户将内网服务器的 22 端口影射到外网服务器的 11000 端口为例)
7.2 实现外网服务器 SSH 端口的影射
# su - <user for intranet penetration>
$ ssh -X -fCNL *:10000:localhost:11000 localhost
或者:
# ps -aux | grep -v grep | grep "*:10000:localhost:11000 localhost" || su - <user for intranet penetration> -c 'ssh -X -fCNL *:10000:localhost:11000 localhost'
(补充:这里以使用用于内网穿透的用户将外网服务器的 10000 端口影射到外网服务器的 11000 端口为例)
步骤八:客户端电脑使用 SSH 外网穿透
# ssh -p 10000 <user for intranet penetration>@<IP address of Internet server>
(补充:SSH 成功后,客户端电脑就可以直接 SSH 到内网服务器中了)
[步骤] 软件源的设置 (openSUSE 版) (本地镜像版)
步骤一:加载本地镜像到系统光驱
(步骤略)
步骤二:挂载本地镜像
# mount /dev/cdrom /mnt
(补充:这里以挂载 /dev/sr1 到 /mnt 目录为例)
步骤三:添加本地镜像里的软件源
# zypper ar file:///mnt/Module-Basesystem openSUSE15-Base
或者:
# zypper ar -f /mnt/Module-Basesystem openSUSE15-Base
(补充:这里以将 /mnt/Module-Basesystem 添加到软件源并命名为 openSUSE15-Base 为例)