[Steps] Shortcut Script Creation (Windows 10 Edition)

Text:

Step One: Open a PowerShell terminal

(Steps omitted)

Step Two: Execute follow script

$installedapps = get-AppxPackage

$aumidList = @()
foreach ($app in $installedapps)
{
    foreach ($id in (Get-AppxPackageManifest $app).package.applications.application.id)
    {
        $aumidList += $app.packagefamilyname + "!" + $id
    }
}

$aumidList
Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy!App
Microsoft.BioEnrollment_cw5n1h2txyewy!App
1527c705-839a-4832-9118-54d4Bd6a0c89_cw5n1h2txyewy!Microsoft.Windows.FilePicker
c5e2524a-ea46-4f67-841f-6a9465d9d515_cw5n1h2txyewy!App
E2A4F912-2574-4A75-9BB0-0D023378592B_cw5n1h2txyewy!Microsoft.Windows.AppResolverUX
Microsoft.LockApp_cw5n1h2txyewy!WindowsDefaultLockScreen
Microsoft.Win32WebViewHost_cw5n1h2txyewy!DPI.PerMonitorAware
Microsoft.Win32WebViewHost_cw5n1h2txyewy!DPI.SystemAware
Microsoft.Win32WebViewHost_cw5n1h2txyewy!DPI.Unaware
Microsoft.MicrosoftEdgeDevToolsClient_8wekyb3d8bbwe!App
Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy!App
Microsoft.Windows.OOBENetworkCaptivePortal_cw5n1h2txyewy!App
Microsoft.Windows.NarratorQuickStart_8wekyb3d8bbwe!App
Microsoft.Windows.ParentalControls_cw5n1h2txyewy!App
Microsoft.Windows.PeopleExperienceHost_cw5n1h2txyewy!App
Microsoft.Windows.CallingShellApp_cw5n1h2txyewy!Microsoft.Windows.CallingShellApp
Microsoft.Windows.CapturePicker_cw5n1h2txyewy!App
NcsiUwpApp_8wekyb3d8bbwe!App
MicrosoftWindows.UndockedDevKit_cw5n1h2txyewy!App
Windows.CBSPreview_cw5n1h2txyewy!Microsoft.Windows.CBSPreview
Microsoft.Windows.XGpuEjectDialog_cw5n1h2txyewy!Microsoft.Windows.XGpuEjectDialog
Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy!App
Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI
Microsoft.AccountsControl_cw5n1h2txyewy!App
Microsoft.CredDialogHost_cw5n1h2txyewy!App
Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy!App
Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy!App
Microsoft.Windows.OOBENetworkConnectionFlow_cw5n1h2txyewy!App
F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE_cw5n1h2txyewy!App
Microsoft.XboxGameCallableUI_cw5n1h2txyewy!Microsoft.XboxGameCallableUI
Microsoft.AsyncTextService_8wekyb3d8bbwe!App
Microsoft.Windows.PinningConfirmationDialog_cw5n1h2txyewy!App
Windows.PrintDialog_cw5n1h2txyewy!Microsoft.Windows.PrintDialog
Microsoft.Windows.Apprep.ChxApp_cw5n1h2txyewy!App
windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel
Microsoft.WindowsCamera_8wekyb3d8bbwe!App
Microsoft.Wallet_8wekyb3d8bbwe!App
RealtekSemiconductorCorp.RealtekAudioControl_dt26b99r8h8gj!App
Microsoft.GetHelp_8wekyb3d8bbwe!App
Microsoft.ECApp_8wekyb3d8bbwe!App
Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe!App
Microsoft.MicrosoftPCManager_8wekyb3d8bbwe!App
Microsoft.MicrosoftPCManager_8wekyb3d8bbwe!PCWndManager
Microsoft.MicrosoftPCManager_8wekyb3d8bbwe!PCManagerService
Microsoft.ScreenSketch_8wekyb3d8bbwe!App
Microsoft.LanguageExperiencePackzh-CN_8wekyb3d8bbwe!App
Microsoft.LanguageExperiencePackzh-TW_8wekyb3d8bbwe!App
Microsoft.LanguageExperiencePacken-GB_8wekyb3d8bbwe!App
Clipchamp.Clipchamp_yxz26nhyzhsrt!App
Clipchamp.Clipchamp_yxz26nhyzhsrt!CLI
AppleInc.iTunes_nzyj5cx40ttqa!iTunes
AppleInc.iTunes_nzyj5cx40ttqa!AppleInc.Defaults
AppleInc.iTunes_nzyj5cx40ttqa!AppleInc.MDCrashReporter
Microsoft.HEIFImageExtension_8wekyb3d8bbwe!App
Microsoft.XboxGameOverlay_8wekyb3d8bbwe!App
Microsoft.XboxSpeechToTextOverlay_8wekyb3d8bbwe!App
Microsoft.Xbox.TCUI_8wekyb3d8bbwe!Microsoft.Xbox.TCUI
Microsoft.WebMediaExtensions_8wekyb3d8bbwe!Microsoft.WebMediaExtensions
Microsoft.XboxIdentityProvider_8wekyb3d8bbwe!Microsoft.XboxIdentityProvider
Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe!App
Microsoft.Getstarted_8wekyb3d8bbwe!App
Microsoft.ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo
Microsoft.WindowsStore_8wekyb3d8bbwe!App
Microsoft.StorePurchaseApp_8wekyb3d8bbwe!App
Microsoft.VP9VideoExtensions_8wekyb3d8bbwe!App
Microsoft.Whiteboard_8wekyb3d8bbwe!Whiteboard
Microsoft.WebpImageExtension_8wekyb3d8bbwe!App
Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App
Microsoft.XboxGamingOverlay_8wekyb3d8bbwe!App
Microsoft.Windows.Photos_8wekyb3d8bbwe!App
Microsoft.YourPhone_8wekyb3d8bbwe!App
Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!App
Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!PythonRedirector
Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!winget
Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!WinGetComServer
Microsoft.Windows.Search_cw5n1h2txyewy!CortanaUI
Microsoft.Windows.Search_cw5n1h2txyewy!ShellFeedsUI
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!PackageMetadata
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.Accounts
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.AppListBackup
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.BackupBanner
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.DesktopSpotlight
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!InputApp
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.IrisService
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!Global.RulesEngine
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!ScreenClipping
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!WebExperienceHost
MicrosoftWindows.Client.CBS_cw5n1h2txyewy!WindowsBackup
AppleInc.iCloud_nzyj5cx40ttqa!iCloud
AppleInc.iCloud_nzyj5cx40ttqa!iCloudPhotoViewer
AppleInc.iCloud_nzyj5cx40ttqa!iCloudPasswords
AppleInc.iCloud_nzyj5cx40ttqa!iCloudChrome
AppleInc.iCloud_nzyj5cx40ttqa!iCloudPasswordsExtensionHelper
AppleInc.iCloud_nzyj5cx40ttqa!iCloudFirefox
AppleInc.iCloud_nzyj5cx40ttqa!eReporter
AppleInc.iCloud_nzyj5cx40ttqa!iCloudDrive
AppleInc.iCloud_nzyj5cx40ttqa!iCloudPhotos
AppleInc.iCloud_nzyj5cx40ttqa!ApplePhotoStreams
AppleInc.iCloud_nzyj5cx40ttqa!iCloudCKKS
AppleInc.iCloud_nzyj5cx40ttqa!APSDaemon
Microsoft.WindowsTerminal_8wekyb3d8bbwe!App

Step three: Create local boot script

Create a new bat file and create follow content:

start shell:Appsfolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App

(Add: taking starting the Terminal application as an example here)

Step Four: Double click this boot script

(Steps omitted)

Reference:

https://forum.rainmeter.net/viewtopic.php?t=22716

Several situations of Linux automatically reboot without reboot logs in the /var/log/messages

Situation One

This Linux server is a virtual server. If we reboot it though its virtual software, there is no relevant logs in the /var/log/messages.

Situation Two

This Linux server is a member of a pacemaker cluster. If the pacemaker cluster software fences this server for protecting the whole cluster, there is no relate logs in the /var/log/messages.

Situation Three

This Linux server has critical problems in its system or hardware. Core panic of Linux and hardware problem both can reboot the system automatically without any reboot logs in the /var/log/messages.

[内容] pip 工具的安装 (MacBook Air 版)

内容一:安装 pip2

1.1 下载 pip2

$ curl 'https://bootstrap.pypa.io/pip/2.7/get-pip.py' > get-pip.py

1.2 安装 pip2

$ sudo python get-pip.py

1.3 删除 pip2

$ rm get-pip.py

1.4 显示安装的 pip2

1.4.1 显示在 python 里有没有 pip 安装包
$ ls /Library/Python/2.7/site-packages/

(补充:这里以 Python 版本是 2.7 为例)

1.4.2 显示有没有 pip2 命令
$ which pip2
1.4.3 升级 pip2
$ sudo pip2 install --upgrade pip

内容二:安装 pip3

2.1 准备安装 pip3 所需的环境

2.1.1 安装 python3
2.1.1.1 输入 python3 命令
$ python3
2.1.1.2 在弹出的对话框里安装 python3

(步骤略)

2.1.2 安装 xcode
2.1.2.1 输入 xcode-select –install 命令
$ xcode-select --install
2.1.2.2 在弹出的对话框里安装 xcode

(步骤略)

2.2 安装 pip3

2.2.1 下载 pip3
$ curl 'https://bootstrap.pypa.io/pip/get-pip.py' > get-pip.py
2.2.2 安装 pip3
$ sudo python get-pip.py
2.2.3 删除 pip3
$ rm get-pip.py
2.2.4 显示安装的 pip3
2.2.4.1 显示在 python 里有没有 pip 安装包
$ ls /Library/Python/3.8/site-packages/

(补充:这里以 Python 版本是 3.8 为例)

2.2.4.2 显示有没有 pip3 命令
$ which pip3
2.2.4.3 升级 pip3
$ sudo pip3 install --upgrade pip

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

步骤一:规划拓扑

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 地址

(步骤略)

[步骤] 浏览器模块的添加 (SwitchyOmega) (Chrome 版)

步骤一:下载 SwitchyOmega_Chromium.crx

1.1 登录网址 https://github.com/FelisCatus/SwitchyOmega/releases
1.2 选择对应的 SwitchyOmega 版本
1.3 在页面的下方下载 SwitchyOmega_Chromium.crx

步骤二:解压 SwitchyOmega_Chromium.crx

2.1 将 SwitchyOmega_Chromium.crx 的后缀修改为 zip
2.2 解压 SwitchyOmega_Chromium.zip

步骤三:添加 SwitchyOmega 模块

3.1 在 Chrome 浏览器中输入网址:chrome://extensions/
3.2 打开页面右上角的“开发者模式”
3.3 点击“加载已解压的扩展程序”
3.4 选择刚刚解压好的 SwitchyOmega_Chromium 文件夹