[实验] Linux 远程日志的集中管理和分文件存储 (通过 Rsyslog 实现)

步骤一:规划拓扑

1.1 服务器列表

rsyslog 服务端 IP 地址:192.168.0.11
rsyslog 客户端 IP 地址:192.168.0.12

1.2 服务器列表简介

rsyslog 客户端将日志发送给 rsyslog 服务端,并实现分文件存储

步骤二:系统环境要求

1) 所有服务器的系统都需要是 CentOS 8 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要关闭 SELinux
4) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
5) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:配置 rsyslog 服务端

3.1 修改 rsyslog 配置文件的案例

3.1.1 案例一

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将所有 rsyslog 客户端的日志存储在 rsyslog 服务端的 /var/log/message 里

3.1.2 案例二

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/%HOSTNAME%.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下的一个文件里,此文件会以其所属系统名命名

3.1.3 案例三

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/remotelog/%HOSTNAME%-%$YEAR%-%$MONTH%-%$DAY%-messages.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/remotelog 下的一个文件里,此文件会以其创建时间和其所属系统名命名

3.1.4 案例四

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/remotelog/%HOSTNAME%-%$YEAR%-%$MONTH%-%$DAY%-messages.log"
:fromhost-ip,!isequal,"127.0.0.1" -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下的一个文件里,此文件会以其创建时间和其所属系统名命名
4) 此配置不会单独存储 rsyslog 服务端的日志

3.1.5 案例五

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/syslog/system-%HOSTNAME%/messages.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下某个目录的 messages 文件里,此目录会以其所属系统名命名

3.2 重启 rsyslog 服务

(只在 rsyslog 服务端执行以下步骤)

# systemctl restart rsyslog


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 需要在 3.1 修改 rsyslog 配置文件的案例中任选其一完成后在执行此步骤

步骤四:配置 rsyslog 客户端

4.1 修改 rsyslog 客户端的案例

(只在 rsyslog 客户端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
*.emerg;*.alert;*.crit;*.err;*.warning;*.notice;*.info  @192.168.0.11

或者:

......
*.emerg;*.alert;*.crit;*.err;*.warning;*.notice;*.info  @@192.168.0.11


补充:
1) 这里的 192.168.0.11 是指 rsyslog 服务端的 IP 地址
2) IP 地址前一个 “@” 符后是指使用 UDP 端口 514 传输日志
3) IP 地址前两个 “@” 符后是指使用 TCP 端口 514 传输日志

4.2 重启 rsyslog 服务

(只在 rsyslog 客户端执行以下步骤)

# systemctl restart rsyslog

步骤五:测试 rsyslog 服务

5.1 在 rsyslog 客户端上发送日志

(只在 rsyslog 客户端执行以下步骤)

# logger "This is our test log"

(补充:这里以发送 This is our test log 信息为例)

5.2 在 rsyslog 服务端上显示日志

(只在 rsyslog 服务端执行以下步骤)

# cat /var/log/* | grep test

[步骤] 远程虚拟化平台的搭建

步骤一:规划拓扑

1.1 电脑列表

1) 一台可以联接公网的电脑
2) 一个 CentOS 8.2 系统的安装 U 盘
3) 一台可以联接公网并且有公网 IP 地址的 VPS
4) 一个可以联接公网并使用 SSH 和 VNC 的客户端

1.2 服务器列表简介

1) 电脑通过 SSH 建立联接到 VPS 的隧道,此操作会占用 VPS 的一个端口
2) VPS 通过 SSH 将联接电脑的隧道端口映射到一个新的端口
3) 客户端通过 SSH 联接到 VPS 映射出来的新端口,通过 SSH 或远程桌面使用虚拟化平台
4) 客户端和电脑如果在同一内网里则可以通过 Samba 互传数据

步骤二:CentOS 8.2 系统的安装 U 盘给电脑安装系统

(只在电脑上执行以下步骤)
(步骤略)


补充:
安装系统时可选择以下选项:
1) 系统起动方式:BIOS
2) Keyboard:English(US)
3) Language Support:English(United States)
4) Time & Date:Asia/ShangHai
5) Installation Source:Local media
6) Software Selection:Minial Install
7) Installation Destination:将主硬盘里的所有空间都分配给根 “/” 分区
8) KDUMP:Kdump is disabled
9) Network & Host Name:开启网络联接并设置好固定 DNS
10) SECURITY POLICY:No controller found

(这里以将 IP 地址设置为固定 IP 地址 192.168.0.1,DNS 设置为固定 DNS 8.8.8.8 为例)

步骤三:安装图形系统桌面

(只在电脑上执行以下步骤)

# yum groupinstall -y "Server with GUI"

步骤四:安装中文输入法

4.1 安装中文库

(只在电脑上执行以下步骤)

# yum -y install langpacks-zh_CN

4.2 确认中文库已经安装

(只在电脑上执行以下步骤)

# locale -a

4.3 安装中文输入法

(只在电脑上执行以下步骤)

# yum -y install ibus ibus-libpinyin

步骤五:创建用户用户

5.1 创建用户用户

(分别在电脑、VPS 和客户端上执行以下步骤)

# useradd zhumingyu

(补充:这里创建用户 zhumingyu 为例)

5.2 给用户用户设置密码

(分别在电脑、VPS 和客户端上执行以下步骤)

# passwd zhumingyu

(补充:这里创建用户 zhumingyu 为例)

步骤六:增加 CentOS 系统的稳定性

6.1 延长看门狗喂狗间隔以减少系统被软锁出现 softlockup 的几率

6.1.1 临时延长看门狗喂狗间隔的时间

(分别在电脑和 VPS 上执行以下步骤)

# sysctl -w kernel.watchdog_thresh=60
6.1.2 永久延长看门狗喂狗间隔的时间
6.1.2.1 添加延长看门狗喂狗间隔的设置

(只在电脑上执行以下步骤)

# vim /etc/sysctl.conf

添加以下内容:

......
kernel.watchdog_thresh=60
6.1.2.2 让添加延长看门狗喂狗间隔的设置生效

(只在电脑上执行以下步骤)

# sysctl -p
6.1.3 让 softlockup 触发后直接宕机

(只在电脑上执行以下步骤)

# echo 1 > /proc/sys/kernel/softlockup_panic

6.2 禁止图形系统桌面的 DNS 和路由以避免系统崩溃

6.2.1 添加禁止图形系统桌面的 DNS 和路由的设置

(分别在电脑和 VPS 上执行以下步骤)

# vim /etc/sysconfig/network-scripts/ifcfg-enp9s0

添加以下内容:

......
PEERDNS=no
PEERROUTES=no

(补充:这里的 ifcfg-enp9s0 是指网卡对应的配置文件,不同的网卡对应的配置文件不同,这里以网卡名 ifcfg-enp9s0 为例,需要给所有网卡添加此参数,这一步也可以在系统图形系统桌面上设置)

6.2.2 让禁止图形系统桌面的 DNS 和路由的设置生效

(分别在电脑和 VPS 上执行以下步骤)

# systemctl restart NetworkManager

6.3 禁止图形系统界面自动黑屏或自动挂起

(只在电脑上执行以下步骤)

6.4 让 SSH 联接永久不超时

6.4.1 让 SSH 服务端的连接不超时

(分别在电脑和 VPS 上执行以下步骤)

# vim /etc/ssh/sshd_config

将以下内容:

......
#ClientAliveInterval 0
#ClientAliveCountMax 3
......

修改为:

......
ClientAliveInterval 60
ClientAliveCountMax 525600
......

(补充:这样设置会让 SSH 服务端每 60s 就会尝试连接一次客户端,如果 525600 次后没有回应,则断开)

6.4.2 让用户登录永不超时
6.4.2.1 在系统文件里添加让用户登录永不超时的设置

(分别在电脑和 VPS 上执行以下步骤)

# vim /etc/bashrc

添加以下内容:

......
export TMOUT=0
# vim /etc/profile

添加以下内容:

......
export TMOUT=0
6.4.2.2 让用户登录永不超时的设置立刻生效

(分别在电脑和 VPS 上执行以下步骤)

# source /etc/bashrc
# source /etc/profile

6.5 删除不需要的软件包以避免 CPU 占用过高而崩溃(选做)

(步骤略)

步骤七:搭建虚拟化平台

(只在电脑上执行以下步骤)

# yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu virt-install virt-manager virt-viewer virt-v2v

步骤八:实现文件共享

8.1 安装 Samba 服务

(只在电脑上执行以下步骤)

# yum -y install samba

8.2 配置 Samba 服务的配置文件

(只在电脑上执行以下步骤)

# vim /etc/samba/smb.conf

将全部内容修改如下:

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
workgroup = WORKGROUP
realm = zhumingyu
netbios name = zhumingyu
#encrypt passwords = yes
map to guest = NEVER
security = user
password server = *
name resolve order = bcast host
restrict anonymous = 2
#null passwords = no
#guest account = smb_nobody
#use spnego = yes
client use spnego = yes
server string = ""
host msdfs = no
msdfs root = no
domain master = no
preferred master = no
local master = no
os level = 0
browse list = no
browseable = no
dns proxy = no
wide links = no
public= no
guest ok = no
hosts deny = ALL EXCEPT 192.168.0.2

[share]
valid users = zhumingyu
write list = zhumingyu
read list = zhumingyu
path = /share
guest ok = no
read only = no
browseable = no
writable = yes
public = no
create mask = 0755
directory mask = 0755


补充:
1) 这里以 Samba 服务器的 IP 地址是 192.168.0.1 为例
2) 这里的 workgroup = WORKGROUP 是让 Samba 服务属于 WORKGROUP
3) 这里的 hosts deny = ALL EXCEPT 192.168.0.2 是只让客户端 192.168.0.3 能够访问服务端的 Samba
4) 这里的 sharetest 是这个 Samba 挂载点的名称,挂载这个挂载点的格式就是://192.168.0.1/share
5) 这里的 valid users = zhumingyu 是 Samba 服务共享用户需要手动生成
6) 这里的 path = /share 是 Samba 服务共享目录需要手动生成

8.3 设置 Samba 服务共享用户

8.3.1 给 Samba 服务共享用户设置 Samba 共享密码

(只在电脑上执行以下步骤)

# smbpasswd -a zhumingyu

(补充:这里以用户 zhumingyu 为例)

8.3.2 显示 Samba 服务共享用户是否可用

(只在电脑上执行以下步骤)

# pdbedit -L

8.4 生成 Samba 服务共享目录

8.4.1 生成 Samba 服务共享目录

(只在电脑上执行以下步骤)

# mkdir /share
8.4.2 给 Samba 服务共享目录设置权限

(只在电脑上执行以下步骤)

# chmod 755 /share/
8.4.3 给 Samba 服务共享目录设置所属主和所属组

(只在电脑上执行以下步骤)

# chown zhumingyu:zhumingyu /share/

(补充:这里以用户 zhumingyu 为例)

8.4.4 给 Samba 服务共享目录设置 selinux 标签

(只在电脑上执行以下步骤)

# semanage fcontext -a -t samba_share_t '/share(/.*)?'
8.4.5 让 Samba 服务共享目录上的 selinux 标签立刻生效

(只在电脑上执行以下步骤)

# restorecon -RFvv /share/

8.5 启动 Samba 服务并设置为开机自动启动

(只在电脑上执行以下步骤)

# systemctl enable --now smb

8.6 在系统防火墙开放 Samba 的端口

8.6.1 在系统防火墙开放 Samba 的端口

(只在电脑上执行以下步骤)

# firewall-cmd --add-service=samba --permanent
8.6.2 让系统防火墙重新加载

(只在电脑上执行以下步骤)

# firewall-cmd --reload

步骤九:实现远程桌面

9.1 安装 vnc 服务

(只在电脑上执行以下步骤)

# yum -y install tigervnc tigervnc-server

9.2 设置 VNC 服务共享用户

9.2.1 进入用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

9.2.2 给 VNC 服务共享用户设置 VNC 远程密码

(只在电脑上执行以下步骤)

$ vncpasswd
9.2.3 退出用户

(只在电脑上执行以下步骤)

$ exit

9.3 启动 VNC 并设置为开机自动启动

9.3.1 创建开启 VNC 的脚本 ~/vnc.sh
9.3.1.1 进入到用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

9.3.1.2 创建开启 VNC 的脚本 ~/vnc.sh

(只在电脑上执行以下步骤)

$ vim ~/vnc.sh

创建以下内容:

#!/bin/bash

vncserver -list | grep :1 &> /dev/null || vncserver :1 -localhost -nolisten tcp

(补充:此命令会检查 vncserver :1 会话是否存在,如果不存在,就以禁止非安全远程登录的方式创建一个)

9.3.1.3 退出用户

(只在电脑上执行以下步骤)

$ exit
9.3.2 执行开启 VNC 的脚本
9.3.2.1 开机执行开启 VNC 的脚本
9.3.2.1.1 配置开机执行的文件

(只在电脑上执行以下步骤)

# vim /etc/rc.local

添加以下内容:

......
su - zhumingyu -c '/home/zhumingyu/vnc.sh'

(补充:这里以用户 zhumingyu 的身份运行)

或者:

......
su - zhumingyu -c 'vncserver -list | grep :1' &> /dev/null || su - zhumingyu -c 'vncserver :1 -localhost -nolisten tcp'


补充:
1) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
2) 以用户 zhumingyu 的身份运行
3) 此命令会检查 vncserver :1 会话是否存在,如果不存在,就以禁止非安全远程登录的方式创建一个

9.3.2.1.2 给开机执行的文件执行权限

(只在电脑上执行以下步骤)

# chmod u+x /home/zhumingyu/vnc.sh
9.3.2.2 定期执行开启 VNC 的脚本
9.3.2.2.1 进入到用户
# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

9.3.2.2.2 配置定期执行的文件

(只在电脑上执行以下步骤)

$ crontab -e

添加以下内容:

......
0 */1 * * * /home/zhumingyu/vnc.sh

或者:

......
0 */1 * * * vncserver -list | grep :1' &> /dev/null || su - zhumingyu -c 'vncserver :1 -localhost -nolisten tcp


补充:
1) 这里以用户 zhumingyu 的身份运行
2) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
3) 此命令会检查 vncserver :1 会话是否存在,如果不存在,就以禁止非安全远程登录的方式创建一个

9.3.2.2.3 退出用户

(只在电脑上执行以下步骤)

$ exit

步骤十:设置 SSH 内网穿透

10.1 生成 SSH 密钥
10.1.1 进入到用户

(分别在电脑、VPS 和客户端上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

10.1.2 生成 SSH 密钥

(分别在电脑、VPS 和客户端上执行以下步骤)

$ ssh-keygen -b 2048 -t rsa

(补充:建议在创建 SSH 密钥时为 SSH 密钥添加一个密码)

10.1.3 退出用户

(分别在电脑、VPS 和客户端上执行以下步骤)

$ exit

10.2 实现无密钥 SSH

10.2.1 进入到用户

(分别在电脑、VPS 和客户端上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

10.2.2 让电脑可以无密钥 SSH VPS

(只在电脑上执行以下步骤)

$ ssh-copy-id <public IP address of VPS>
10.2.3 让 VPS 可以无密钥 SSH 自己

(只在 VPS 上执行以下步骤)

$ ssh-copy-id localhost
10.2.4 让客户端可以远程 VPS 和电脑
$ ssh-copy-id <IP address of computer>
$ ssh-copy-id <public IP address of VPS>
10.2.5 退出用户

(分别在电脑、VPS 和客户端上执行以下步骤)

$ exit

10.3 建立电脑到 VPS 的 SSH 隧道并设置为开机自启

10.3.1 创建建立电脑到 VPS 的 SSH 隧道的脚本 ~/ssh.sh
10.3.1.1 进入到用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

10.3.1.2 创建建立电脑到 VPS 的 SSH 隧道的脚本 ~/ssh.sh

(只在电脑上执行以下步骤)

$ vim ~/ssh.sh

创建以下内容:

ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of computer>" &> /dev/null || ssh -X -fCNR 11000:localhost:22 <IP address of computer>


补充:
1) 这里以用户 zhumingyu 的身份运行
2) 如果 11000 端口没有影射到 22 端口则影射

10.3.1.3 退出用户

(只在电脑上执行以下步骤)

$ exit
10.3.2 执行电脑到 VPS 的 SSH 隧道的脚本
10.3.2.1 开机执行开启电脑到 VPS 的 SSH 隧道的脚本
10.3.2.1.1 配置开机执行的文件

(只在电脑上执行以下步骤)

# vim /etc/rc.local

添加以下内容:

......
su - zhumingyu -c '/home/zhumingyu/ssh.sh'

(补充:这里以用户 zhumingyu 的身份运行)

或者:

......
ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of computer>" &> /dev/null || su - zhumingyu -c 'ssh -X -fCNR 11000:localhost:22 <IP address of computer>'


补充:
1) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
2) 这里以用户 zhumingyu 的身份运行
3) 如果 11000 端口没有影射到 22 端口则影射

10.3.2.1.2 给开机执行的文件执行权限

(只在电脑上执行以下步骤)

# chmod +x /etc/rc.local
10.3.3 定期执行电脑到 VPS 的 SSH 隧道的脚本
10.3.3.1 进入到用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以 zhumingyu 为例)

10.3.3.2 配置定期执行的文件

(只在电脑上执行以下步骤)

$ crontab -e

添加以下内容:

......
0 */1 * * * /home/zhumingyu/ssh.sh

或者:

......
0 */1 * * * ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of computer>" &> /dev/null || ssh -X -fCNR 11000:localhost:22 <IP address of computer>

(补充:如果 11000 端口影射到 22 端口则影射)

10.3.3.3 退出用户

(只在电脑上执行以下步骤)

$ exit

10.4 建立 VPS 的 SSH 隧道端口映射并设置为开机自启

10.4.1 创建建立 VPS 的 SSH 隧道端口映射的脚本
10.4.1.1 进入到用户

(只在 VPS 上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

10.4.1.2 创建建立 VPS 的 SSH 隧道端口映射的脚本

(只在 VPS 上执行以下步骤)

$ vim ~/sshd.sh

创建以下内容:

#!/bin/bash

ps -aux | grep -v grep | grep "*:10000:localhost:11000 localhost" || ssh -X -fCNL *:10000:localhost:11000 localhost

(补充:如果 11000 端口没有影射成 10000 端口则影射)

10.4.1.3 退出用户

(只在 VPS 上执行以下步骤)

$ exit
10.4.2 执行电脑到 VPS 的 SSH 隧道的脚本
10.4.2.1 开机执行开启电脑到 VPS 的 SSH 隧道的脚本
10.4.2.1.1 配置开机执行的文件

(只在 VPS 上执行以下步骤)

# vim /etc/rc.local

添加以下内容:

......
su - zhumingyu -c '/home/zhumingyu/sshd.sh'

(补充:这里以用户 zhumingyu 为例)

或者:

......
ps -aux | grep -v grep | grep "*:10000:localhost:11000 localhost" || su - zhumingyu -c 'ssh -X -fCNL *:10000:localhost:11000 localhost'


补充:
1) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
2) 以用户 zhumingyu 的身份运行
3) 如果 11000 端口没有影射成 10000 端口则影射

10.4.2.1.2 给开机执行的文件执行权限

(只在 VPS 上执行以下步骤)

# chmod +x /etc/rc.local
10.4.3 定期执行电脑到 VPS 的 SSH 隧道的脚本
10.4.3.1 进入到用户用户

(只在 VPS 上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

10.4.3.2 配置定期执行的文件

(只在 VPS 上执行以下步骤)

$ crontab -e

添加以下内容:

......
0 */1 * * * /home/zhumingyu/sshd.sh

或者:

......
0 */1 * * * ps -aux | grep -v grep | grep "*:10000:localhost:11000 localhost" || ssh -X -fCNL *:10000:localhost:11000 localhost


补充:
1) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
2) 如果 11000 端口没有影射成 10000 端口则影射

10.4.4 退出用户

(只在 VPS 上执行以下步骤)

$ exit
10.4.5 打开外网 VPS 对应端口的防火墙
10.4.5.1 打开外网 VPS 对应端口的防火墙

(只在 VPS 上执行以下步骤)

# firewall-cmd --add-port=10000/tcp --permanent

(补充:这里打开的端口号,是根据前面的设置而定的)

10.4.5.2 让刚刚外网 VPS 刚刚配置的防火墙生效

(只在 VPS 上执行以下步骤)

# firewall-cmd --reload

步骤十一:加强 SSH 的安全性(选做)

11.1 禁止 root 被 SSH(选做)

(分别在电脑和 VPS 上执行以下步骤)

# vim /etc/ssh/sshd_config

将以下内容:

......
PermitRootLogin no
......

修改为:

......
PermitRootLogin yes
......

11.2 禁止使用密码被 SSH(选做)

(分别在电脑和 VPS 上执行以下步骤)

# vim /etc/ssh/sshd_config

将以下内容:

......
# PasswordAuthentication yes
......

修改为:

......
PasswordAuthentication no
......

步骤十二:私有远程桌面和虚拟化平台的使用

12.1 客户端 SSH 联接电脑的方法

12.1.1 客户端和电脑不在同一内网时

(只在客户端上执行以下步骤)

# ssh -X -p <SSH non standard port number> <user of computer>@<public IP address of VPS>


补充:
1) 如果按照前面的步骤操作,这里的 VPS 每小时会生成一个新的 SSH 非标准端口号以用于联接电脑,比如说现在是 14 点,那就会自动生成一个 11014 的 SSH 非标准端口号
2) 如果按照前面的步骤操作,这里的用户是 zhumingyu

12.1.2 客户端和电脑在同一内网时

(只在客户端上执行以下步骤)

# ssh -X <user of computer>@<IP address of computer>


补充:
1) 如果按照前面的步骤操作,这里的用户用户是 zhumingyu
2) 如果按照前面的步骤操作,这里的电脑的 IP 地址是 192.168.0.1

12.2 客户端使用电脑虚拟化平台的的方法

12.2.1 客户端和电脑不在同一内网时
12.2.1.1 在客户端上联接电脑

(只在客户端上执行以下步骤)

# ssh -X -p <SSH non standard port number> <user of computer>@<public IP address of VPS>


补充:
1) 如果按照前面的步骤操作,这里的 VPS 每小时会生成一个新的 SSH 非标准端口号以用于联接电脑,比如说现在是 14 点,那就会自动生成一个 11014 的 SSH 非标准端口号
2) 如果按照前面的步骤操作,这里的用户用户是 zhumingyu

12.2.1.2 通过 ssh 开启虚拟化图形管理平台

(只在客户端上执行以下步骤)

# virt-manager

(注意:网络带宽很小则远程桌面会比较卡,建议电脑、客户端和 VPS 的带宽 2m 以上)

12.2.2 客户端和电脑在同一内网时
12.2.2.1 在客户端上联接电脑

(只在客户端上执行以下步骤)

# ssh -X <user of computer>@<IP address of computer>


补充:
1) 如果按照前面的步骤操作,这里的用户用户是 zhumingyu
2) 如果按照前面的步骤操作,这里的电脑的 IP 地址是 192.168.0.1

12.2.2.2 通过 ssh 开启虚拟化图形管理平台

(只在客户端上执行以下步骤)

# virt-manager

(注意:网络带宽很小则远程桌面会比较卡,建议电脑、客户端和 VPS 的带宽 2m 以上)

12.3 客户端使用私有远程桌面的方法

12.3.1 客户端和电脑不在同一内网时

(只在客户端上执行以下步骤)

# ssh -p <SSH non standard port number> -L <port number of VNC>:localhost:<port number of VNC> -l <user of computer> <public IP address of VPS>


补充:
1) 如果按照前面的步骤操作,这里的 VPS 每小时会生成一个新的 SSH 非标准端口号以用于联接电脑,比如说现在是 14 点,那就会自动生成一个 11014 的 SSH 非标准端口号
2) 如果按照前面的步骤操作,这里的 VNC 的端口号是 5901
3) 如果按照前面的步骤操作,这里的电脑的用户用户是 zhumingyu

另开启一个命令行终端:

# vncviewer localhost :<number of VNC service>

(补充:如果按照前面的步骤操作,这里的 VNC 服务的编号是 1)

(注意:网络带宽很小则远程桌面会比较卡,建议电脑、客户端和 VPS 的带宽 2m 以上)

12.3.2 客户端和电脑在同一内网时

(只在客户端上执行以下步骤)

# vncviewer -via <user of computer>@<IP address of computer> localhost :<number of VNC service>


补充:
1) 如果按照前面的步骤操作,这里的电脑的用户是 zhumingyu
2) 如果按照前面的步骤操作,这里的电脑的 IP 地址是 192.168.0.1
3) 如果按照前面的步骤操作,这里的 VNC 服务的编号是 1

12.4 客户端在内网和电脑互传数据的方法

12.4.1 在 Windows 图形客户端上和电脑互传数据的方法

(只在客户端上执行以下步骤)

在文件目录下栏输入以下内容:

\\<IP address of computer>\<samba directory>


补充:
1) 如果按照前面的步骤操作,这里的电脑的 IP 地址是 192.168.0.1
2) 如果按照前面的步骤操作,这里的 Samba 项目是 share


注意:
1) 如果按照前面的步骤操作,只有 IP 地址是 192.168.0.2 和 192.168.0.3 的客户端才能够执行以上步骤
2) Windows 客户端建议安装 SecureCRT、Xmanager 和 VNC 客户端以实现 ssh、ssh 调用 virt-manager 和 VNC

12.4.2 在 Linux 图形客户端上和电脑互传数据的方法

(只在客户端上执行以下步骤)

在文件 –> 其他位置 –> 连接到服务器的地址栏里输入以下内容:

smb://<IP address of computer>/<samba directory>


补充:
1) 如果按照前面的步骤操作,这里的电脑的 IP 地址是 192.168.0.1
2) 如果按照前面的步骤操作,这里的 Samba 项目是 share

(注意:如果按照前面的步骤操作,只有 IP 地址是 192.168.0.2 和 192.168.0.3 的客户端才能够执行以上步骤)

步骤十三:客户端直接使用公网 IP 地址联接电脑

13.1 实现此步骤所需环境

网关路由器拥有 IP 地址(可以通过给宽带申请公网 IP 地址并将光纤盒设置为桥接模式,在路由器上添加用户和密码实现)

13.2 在路由器上将电脑上的 22 端口映射到路由器上的公网 IP 地址上,这样路由器上的公网 IP 地址就变成电脑的公网 IP 地址了

(步骤略)

13.3 将电脑的公网 IP 地址放到 VPS 上

13.3.1 将电脑的公网 IP 地址放到 VPS 上的意义

由于大多数的公网 IP 地址都是动态,定期会变,所以可以通过此方法知道近期的公网 IP 地址是多少

13.3.2 创建将电脑的公网 IP 地址放到 VPS 上的脚本
13.3.2.1 进入到用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

13.3.2.2 创建将电脑的公网 IP 地址放到 VPS 上的脚本

(只在电脑上执行以下步骤)

$ vim /root/computerip.sh

创建以下内容:

#!/bin/bash

computerip=`curl ifconfig.me`
domain=<public IP address of VPS>

ssh athenadb.com \"echo `curl ifconfig.me` > /home/zhumingyu/serverip.txt\"

(补充:这里以将电脑的公网 IP 地址拷贝到 VPS 的 /tmp/computerip.txt 文件里为例)

13.3.2.3 退出用户用户

(只在电脑上执行以下步骤)

$ exit
13.3.3 执行将电脑的公网 IP 地址放到 VPS 上的脚本
13.3.3.1 进入到用户用户

(只在电脑上执行以下步骤)

# su - zhumingyu

(补充:这里以用户 zhumingyu 为例)

13.3.3.2 配置定期执行的文件

(只在电脑上执行以下步骤)

$ crontab -e

添加以下内容:

......
0 */10 * * * /home/zhumingyu/.crontab/computerip.txt

或者:

......
ssh <public IP address of VPS> \"echo `curl ifconfig.me` > /home/zhumingyu/serverip.txt\"


补充:
1) 如果前面没有创建脚本的话,可以只添加上面“或者”后面的这一行
2) 将电脑的公网 IP 地址拷贝到 VPS 的 /home/zhumingyu/serverip.txt 文件里

13.3.3.3 退出用户用户

(只在电脑上执行以下步骤)

$ exit

13.4 通过 DDNS 服务显示电脑的公网 IP 地址

13.4.1 通过 DDNS 服务显示电脑的公网 IP 地址

由于大多数的公网 IP 地址都是动态,定期会变,所以可以通过此方法知道近期的公网 IP 地址是多少

13.4.2 有些 DDNS 服务可以在网关路由器上设置,并且通过手机 APP 显示现在的公网 IP 地址

(步骤略)

[步骤] Linux Kdump 的开启 (用于收集内核崩溃时的信息) (openSUSE & SLES 版)

步骤一:确保 crash 和 kernel-debuginfo 两个软件包已安装

# rpm -qa | grep crash || zypper install crash ; rpm -qa | grep kernel-debug || zypper install kernel-debug

(注意:此方法只有 openSUSE & SLES 可以使用)

步骤二:给 Kdump 预留内存

2.1 给 Kdump 预留内存

2.1.1 方法一:通过在 /etc/default/grub 配置文件里修改 crashkernel 参数

2.1.1.1 在 /etc/default/grub 配置文件里修改 crashkernel 参数
# vim /etc/default/grub

在这一行里:

.....
GRUB_CMDLINE_LINUX_DEFAULT="......"
.....

确保有:

.....
GRUB_CMDLINE_LINUX="crashkernel=auto......"
.....

并确保此文件其他地方没有和 crashkernel= 相关的参数


补充:这里的 auto 代表系统会根据内存大小自动设置一个值,也可以指定一个值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。如果设置成一个固定值,建议
1) 1 GB 到 4 GB 内存设置成 160 M
2) 4 GB 到 64 GB 内存设置成 192 M
3) 64 GB 到 1 TB 内存设置成 256 M
4) 大于 1 TB 内存设置成 512 M

2.1.1.2 让刚刚修改的内核参数生效
# grub2-mkconfig -o /boot/grub2/grub.cfg

2.1.2 方法二:通过 yast 工具修改 crashkernel 参数

2.1.2.1 方法二:通过 yast 工具修改 crashkernel 参数
# yast kdump

之后将 –Start-Up 中的 Kdump Low Memory [MiB] (72 – 3069) 修改为 256,将 –Start-Up 中的 Kdump High Memory [MiB] (0 – 7168) 修改为 512,之后再选择 [ OK ]

(补充:当 Kdump Low Memory 设置为 256,Kdump High Memory 设置为 512 时更易触发 Kdump)

(注意:此方法只有 openSUSE & SLES 可以使用)

2.1.2.2 让刚刚修改的内核参数生效
# reboot

2.2 显示给 Kdump 预留内存的大小

# makedumpfile --mem-usage /proc/kcore

步骤三:修改 Kdump 的配置信息

3.1 修改 Kdump 的配置文件

# vim /etc/kdump.conf

将以下内容:

......
path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31
......

修改为:

......
path /var/crash
core_collector makedumpfile -c -l --message-level 1 -d 31
default reboot
......


补充:
1) path /var/crash
2) -c 参数会对搜集的内核崩溃时的信息进行压缩
3) default reboot 参数会让 KDUMP 收集完内核崩溃时的信息后重启

3.2 让刚刚修改的 Kdump 配置文件生效

# systemctl enable kdump.service ; systemctl restart kdump.service

步骤四:测试 Kdump

4.1 造成系统内核崩溃

# echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger

(注意:此时系统会自动崩溃并重启)

4.2 显示 Kdump 生成内核崩溃信息

# ls /var/crash/<date>/vmcore

(补充:这里的内核崩溃信息存放目录 /var/crash/,是刚刚在 /etc/kdump.conf 文件里指定的)