云服务器折腾记

1.1 配置终端

我使用的终端为 Windows Terminal。安装方法:Microsoft Store → 搜索 Windows Terminal。

使用教程:打造一个漂亮的WINDOWS TERMINAL | PowerShell终端窗口美化 | Oh-My-Posh - bilibili

1、打开 PowerShell,输入以下指令,生成 GUID。

'{'+[guid]::NewGuid().ToString()+'}'

2、打开 Windows Terminal,按住 Shift 键,同时点击「设置选项」,进入终端配置文件 settings.json。

3、在 profileslist 添加如内容。

{
    "colorScheme": "Nord",
    "commandline": "ssh root@IP", // 公网 IP
    "guid": "{98d7f489-6b01-4e0e-92ac-f2a3ecf38daf}", //前面生成的 GUID
    "hidden": false,
    "name": "Tencent Host" // 主机名
},

image-20240111100407886

然后就可以通过新建标签页,选择 Tencent Host,输入登录密码,连接云服务器。如下图:

image-20240111094846773

1.2 配置服务器

1.2.1 重装系统

使用 「一键 DD 脚本」重装系统

为什么要 DD 系统?

  • 定制需求:有些 VPS 服务商可能提供的是定制版的系统,可能与用户的需求不完全匹配,或者缺少用户需要的特定配置。通过 DD 系统,用户可以选择并安装他们需要的操作系统版本和配置。
  • 系统选择自由:用户可能希望安装不同于服务商提供的默认操作系统的版本,或者希望使用其他 Linux 发行版或 Windows 等操作系统。DD 系统使用户能够自由选择和安装他们想要的系统。
  • 更强的控制权:使用 DD 系统可以更灵活地进行系统配置和定制,而无需依赖服务商的面板。这使得用户能够更好地掌握系统的管理和维护。
  • 规避系统安装限制:一些 VPS 服务商可能限制了系统的重装次数,超过限制可能需要支付额外费用。通过 DD 系统,用户可以规避这些限制,因为它不依赖于服务商提供的系统安装界面。
  • 迅速部署标准化环境:DD 系统可以帮助用户快速部署一个符合其标准的系统环境,而不受服务商的预设限制。这对于需要频繁部署相似环境的用户而言是非常有用的。

leitbogioro/Tools: Something about tools (github.com)

1、获取 Root 权限

sudo su

2、下载 DD 脚本

# 国外
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh

# 国内
curl -O https://raw.fgit.cf/bin456789/reinstall/main/reinstall.sh

3、使用

bash reinstall.sh centos   7|8|9  (8|9 为 stream 版本)
                  debian   10|11|12
                  ubuntu   20.04|22.04
                  # 不输入版本号,则安装最新版
可选参数:         --ci     强制使用云镜像

# 我的选择
bash reinstall.sh debian  --ci
bash <(wget --no-check-certificate -qO- 'qiu.sh/dd') -d 12 -v 64 -a --mirror 'http://mirrors.cloud.tencent.com/debian/' -p 5k.sb

关于 DD 脚本的使用,详细见 @bin456789 大佬的脚本,地址一键重装 / 一键 dd / One-click Reinstall OS

1.2.2 更新软件包

sudo -i        # 切换到 root 用户

# 安装常用软件
apt install wget git curl vim -y

apt update -y  # 获取最新的软件包信息

apt upgrade    # 安装可用的软件包更新

image-20240111101100253

选择 keep …,回车,更新完毕。

1.2.3 修改 SSH 端口

一般情况,VPS 的 SSH 端口默认为 22,不安全,需要自定义 SSH 端口。方法如下。

  1. 执行 vim /etc/ssh/sshd_config,编辑 sshd_config 文件。找到 Port,后面添加端口号。

    # 大于 1024 小于 65535 的整数
    Port 9527
  2. 执行 systemctl restart sshd,重启 OpenSSH。

  3. 在 VPS 控制台添加端口号为 9527的防火墙规则。

  4. 在使用的终端中把主机的 SSH 断后改为 9527。如果是按照我前文方法配置的 Windows Terminal,修改如下。

    {
        "colorScheme": "Nord",
        "commandline": "ssh root@IP -p 9527", // 公网 IP
        "guid": "{98d7f489-6b01-4e0e-92ac-f2a3ecf38daf}", //前面生成的 GUID
        "hidden": false,
        "name": "Tencent Host" // 主机名
    },

1.2.4 密钥登录

使用密码登录服务器麻烦且不安全。推荐使用密钥登录。

1、生成密钥

打开 Git Bash,输入以下代码,

ssh-keygen -t rsa -f  ~/.ssh/这里是新密钥名称 -C "注释"

# 示例
ssh-keygen -t rsa -b 4096 -f  ~/.ssh/id_rsa_host -C "Host SSH"

2、获取公钥内容

进入 C:\Users\seeyuer\.ssh 路径,打开刚刚生成的 id_rsa_host.pub 公钥文件,复制公钥内容。

Vim 使用请看下方链接内容。

3、编辑authorized_keys

终端登录服务器,进入 .ssh 文件夹内。如果没有该文件夹,使用 mkdir 命令创建,并使用 vim 创建并编辑authorized_keys 文件。

cd .ssh
vim authorized_keys

# mkdir .ssh
# touch authorized_keys

4、编辑文件/etc/ssh/sshd_config

vim /etc/ssh/sshd_config
# 去掉下面两行代码的注释
# .ssh/authorized keys2 删除
#PubkeyAuthentication yes
#AuthorizedKeysFile.ssh/authorized keys .ssh/authorized keys2

# yes 改为 no
PasswordAuthentication yes

# 示例
PubkeyAuthentication yes
AuthorizedKeysFile.ssh/authorized keys
PasswordAuthentication no

# 注意只有当后面测试 SSH 密钥登录成功后,才能将 PasswordAuthentication 设为 no。

5、执行以下命令,重启 OpenSSH

systemctl restart sshd

6、测试 SSH 密钥登录

在本地终端中运行以下命令:

ssh -i ~/.ssh/id_rsa username@your_server_ip

# 示例
ssh -i ~/.ssh/id_rsa_host root@IP

# 如果更改了 SSH 端口号,示例如下:
ssh -i ~/.ssh/id_rsa_host root@IP -p 9527

这会使用新生成的密钥进行连接。如果一切设置正确,你将无需输入密码直接登录到服务器。

image-20240111224107728

Windows Terminal 新建标签页,选择 Tencent Host,如果出现如下情况,

root@IP: Permission denied (publickey).

[已退出进程,代码为 255 (0x000000ff)]
现在可以使用Ctrl+D关闭此终端,或按 Enter 重新启动。

修改终端配置文件,如下:

{
    "colorScheme": "Nord",
    // "commandline": "ssh root@IP",
    "commandline": "ssh -i ~/.ssh/id_rsa_host root@IP", // 公网 IP
    "guid": "{98d7f489-6b01-4e0e-92ac-f2a3ecf38daf}", //前面生成的 GUID
    "hidden": false,
    "name": "Tencent Host" // 主机名
},

1.1.5 修改登录提示信息

登录服务器后,显示信息如下图。看起来杂乱,我做了如下修改。

image-20240111160643868

1、修改绿框部分

使用 vim /etc/update-motd.d/10-uname 修改 10-uname 文件。修改如下。

#!/bin/sh
uname -snrvm # 注释掉

2、修改橙框部分

使用 vim /etc/motd 编辑 motd 文件。如果希望显示效果如下代码所示,去 艺术字符生成_英文数字在线转ASCII工具 ,输入字符,选择字体为 ANSI Shadow

==========================================================================================
███████╗███████╗███████╗   ██╗   ██╗██╗   ██╗███████╗   ██╗  ██╗ ██████╗ ███████╗████████╗
██╔════╝██╔════╝██╔════╝   ╚██╗ ██╔╝██║   ██║██╔════╝   ██║  ██║██╔═══██╗██╔════╝╚══██╔══╝
███████╗█████╗  █████╗      ╚████╔╝ ██║   ██║█████╗     ███████║██║   ██║███████╗   ██║   
╚════██║██╔══╝  ██╔══╝       ╚██╔╝  ██║   ██║██╔══╝     ██╔══██║██║   ██║╚════██║   ██║   
███████║███████╗███████╗      ██║   ╚██████╔╝███████╗   ██║  ██║╚██████╔╝███████║   ██║   
╚══════╝╚══════╝╚══════╝      ╚═╝    ╚═════╝ ╚══════╝   ╚═╝  ╚═╝ ╚═════╝ ╚══════╝   ╚═╝   
                          SeeYue's Blog:https://blog.seeyue.top/                          
==========================================================================================

╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ ███████╗███████╗███████╗   ██╗   ██╗██╗   ██╗███████╗   ██╗  ██╗ ██████╗ ███████╗████████╗ ║
║ ██╔════╝██╔════╝██╔════╝   ╚██╗ ██╔╝██║   ██║██╔════╝   ██║  ██║██╔═══██╗██╔════╝╚══██╔══╝ ║
║ ███████╗█████╗  █████╗      ╚████╔╝ ██║   ██║█████╗     ███████║██║   ██║███████╗   ██║    ║
║ ╚════██║██╔══╝  ██╔══╝       ╚██╔╝  ██║   ██║██╔══╝     ██╔══██║██║   ██║╚════██║   ██║    ║
║ ███████║███████╗███████╗      ██║   ╚██████╔╝███████╗   ██║  ██║╚██████╔╝███████║   ██║    ║
║ ╚══════╝╚══════╝╚══════╝      ╚═╝    ╚═════╝ ╚══════╝   ╚═╝  ╚═╝ ╚═════╝ ╚══════╝   ╚═╝    ║
║                          SeeYue's Blog:https://blog.seeyue.top/                            ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝

==============================================================================================
  ███████╗███████╗███████╗   ██╗   ██╗██╗   ██╗███████╗   ██╗  ██╗ ██████╗ ███████╗████████╗  
  ██╔════╝██╔════╝██╔════╝   ╚██╗ ██╔╝██║   ██║██╔════╝   ██║  ██║██╔═══██╗██╔════╝╚══██╔══╝  
  ███████╗█████╗  █████╗      ╚████╔╝ ██║   ██║█████╗     ███████║██║   ██║███████╗   ██║     
  ╚════██║██╔══╝  ██╔══╝       ╚██╔╝  ██║   ██║██╔══╝     ██╔══██║██║   ██║╚════██║   ██║     
  ███████║███████╗███████╗      ██║   ╚██████╔╝███████╗   ██║  ██║╚██████╔╝███████║   ██║     
  ╚══════╝╚══════╝╚══════╝      ╚═╝    ╚═════╝ ╚══════╝   ╚═╝  ╚═╝ ╚═════╝ ╚══════╝   ╚═╝     
                            SeeYue's Blog:https://blog.seeyue.top/                            
==============================================================================================

3、去掉红框部分

使用 vim /etc/ssh/sshd_config 修改 sshd_config 文件。修改如下。

# 去掉注释,yes 改为 no
#PrintLastLog yes

执行 systemctl restart sshd,重启 OpenSSH。

4、增加登录前提示信息

  • /etc/issue:控制本地终端密码登录时的欢迎信息。
  • /etc/issue.net:控制本地终端密钥登录时显示的欢迎信息。

使用 vim /etc/issue 修改 10-uname 文件。修改如下。

Debian GNU/Linux \n \l # 删除
Welcome to Debian! # 添加

使用 vim /etc/ssh/sshd_config 修改 sshd_config 文件。修改如下。

# no default banner path
#Banner none

# 取消 banner 注释,none 改为 /etc/issue

执行 systemctl restart sshd,重启 OpenSSH。

5、增加当前登录时间提示

使用 vim /etc/profile 修改 profile 文件。代码末尾添加如下代码。

echo "Last login: $(date '+%Y.%m.%d %H:%M:%S')"

经历以上修改,登录界面显示如下:

image-20240111165903209

1.3 安装面板

作为 Linux 小白,我更喜欢可视化操作。我使用的面板是 1Panel。安装了面板,我就可以在面板里修改文件,不需要再使用 Vim 💡工具编辑文件。

地址:1Panel - 现代化、开源的 Linux 服务器运维管理面板

安装命令

# CentOS
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

# Ubuntu
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

# Debian
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装过程不必多说,按着提示一步步来即可。安装教程:【1Panel功能演示视频】1. 安装部署及应用管理 - bilibili

1.3 配置 Zsh

Zsh(Z Shell)是一款强大、高度可定制的 Unix shell,它在 bash 的基础上进行了扩展和改进。Zsh 提供了丰富的功能,包括强大的自动补全、主题和插件支持、直观的语法、多目录管理等。

为什么使用 Zsh?

  • 更强大的自动补全: zsh 提供更强大和智能的自动补全功能。它能够根据你的输入和历史记录预测你可能要输入的命令或参数,提高了工作效率。
  • 更丰富的主题和插件: zsh 提供丰富的主题和插件支持,可以轻松地定制外观和功能。这使得用户能够更容易地个性化他们的 shell 环境。
  • 更直观的语法: zsh 在语法和命令编辑方面相对于 bash 更直观。例如,zsh 允许使用通配符进行模糊匹配,并提供更多的快捷键和操作符。
  • 更友好的提示: zsh 提供更友好和详细的提示信息,帮助用户更好地理解发生了什么。

1、查看 shell

# 判断当前使用 shell
echo $SHELL

# 统计服务器 shell 种类
cat /etc/shells

2、下载 zsh

# Debian/Ubuntu
sudo apt install zsh

# CentOS
sudo yum install zsh

3、使用 Zsh

chsh -s /bin/zsh

重启终端,输入 echo $SHELL,即可看见当前使用 shell 为 Zsh。

1.4 配置 Oh My Zsh

Zsh 框架、插件、主题和教程的集合:unixorn/awesome-zsh-plugins

1.4.1 下载与主题使用

Zsh 的功能极其强大,但配置过于复杂,所以推荐使用 Oh My Zsh 管理 Zsh 配置。它具有以下优点。

  • 简化配置: Oh My Zsh 提供了一套简单而强大的配置系统,使得用户能够轻松地配置和个性化他们的 Zsh 环境。通过简单的命令和别名,用户可以自定义提示符、插件、主题等。
  • 丰富的插件系统: Oh My Zsh 提供了一个强大的插件系统,允许用户轻松地扩展其 shell 功能。有许多可用的插件,涵盖了从语法高亮到版本控制集成等各种方面。
  • 强大的主题支持: Oh My Zsh 包含许多漂亮和实用的主题,用户可以选择使用它们或者根据自己的喜好创建自定义主题。主题可以使提示符更具吸引力,并提供有关当前环境的有用信息。
  • 易于安装和卸载: 安装 Oh My Zsh 很简单,只需运行一行命令即可。卸载也很容易,因为 Oh My Zsh 只是一个位于用户主目录的文件夹。这使得试用 Oh My Zsh 变得非常简便。
  • 自动更新和升级: Oh My Zsh 提供了简单的命令,用于更新和升级本身以及其安装的插件。这使得保持 Zsh 和相关工具的最新版本非常容易。
  • 语法高亮和错误提示: 提供语法高亮和错误提示,使得在输入命令时更容易发现和纠正错误。

1、下载 Oh My Zsh

# 国外	
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 国内
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"

# 卸载
uninstall_oh_my_zsh

2、设置 Oh My Zsh 主题

主题列表:Themes · ohmyzsh/ohmyzsh Wiki (github.com)

ys 主题举例,说明如何更换主题。

  1. vim ~/.zshrc,打开 .zshrc 文件,找到 ZSH_THEME,属性值改为 ys
  2. 执行 source ~/.zshrc,重载配置。
  3. 主题设置为:ZSH_THEME="random"。每次打开终端时,主题都是随机的。

1.4.2 Powerlevel10k 配置

我使用的主题是 Powerlevel10k。这是一个专为 Zsh 设计的主题,注重速度、灵活性和即插即用的体验。

地址:romkatv/powerlevel10k: A Zsh theme (github.com)

1、Powerlevel10k 安装

  1. 安装推荐的字体。

    1. Powerlevel10k 使用了图标,需要安装 nerd font。
    2. Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
    3. 官方推荐使用 MesloLGS NF
    4. 在终端选择使用 MesloLGS NF 字体。
  2. 安装 Powerlevel10k 主题。

    # 国外
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
    
    #国内
    git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  3. ~/.zshrc中,设置 ZSH_THEME="powerlevel10k/powerlevel10k"

  4. 使用 exec zsh 重新启动 Zsh。

  5. 如果配置向导没有自动启动,请输入 p10k configure 配置 Powerlevel10k 主题。

2、Powerlevel10k 卸载

  1. .zshrc从文件中移除 Powerlevel10k 配置

    vim ~/.zshrc
    
    # .zshrc 文件顶部
    if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
      source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
    fi
    
    # .zshrc 文件尾部
    [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
    
    # 代码注释可删可不删
    
    # 改为 Zsh 自带主题
    ZSH_THEME="powerlevel10k/powerlevel10k"
  2. ~/.zshrc~/.zpreztorc~/.zimrc 文件中移除所有对 powerlevel10k 的引用。这些引用可能在你安装 Powerlevel10k 时手动添加的。如果需要提醒,可参考安装说明。

  3. 验证 ~/.zshrc~/.zpreztorc~/.zimrc 中是否不再包含对 “p10k” 和 “powerlevel10k” 的任何引用。

    grep -E 'p10k|powerlevel10k' ~/.zshrc ~/.zpreztorc ~/.zimrc 2>/dev/null

    输出为空,则表明 powerlevel10k 配置已完全移除。

  4. 删除 Powerlevel10k 的配置文件。这个文件是由配置向导创建的,可能包含你自己手动编辑的内容。

    # 查看
    vim ~/.p10k.zsh
    
    # 删除
    rm -f ~/.p10k.zsh
  5. 删除 Powerlevel10k 的源文件。这些文件在你安装 Powerlevel10k 时下载的。

    rm -rf -- ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  6. 执行 exec zsh 重新启动 Zsh。

  7. 删除 Powerlevel10k 缓存文件。

    rm -rf -- "${XDG_CACHE_HOME:-$HOME/.cache}"/p10k-*(N) "${XDG_CACHE_HOME:-$HOME/.cache}"/gitstatus

3、Powerlevel10k 升级

  1. 执行以下命令,拉取代码。

    git -C ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k pull
  2. 执行 exec zsh 重新启动 Zsh。

1.4.3 插件配置

Oh My Zsh 自带了很多插件,但默认不启用。

插件地址:ohmyzsh/plugins · ohmyzsh/ohmyzsh (github.com)

使用方法

  1. 打开 .zshrc,找到 plugins 属性。
# () 输入插件名称,多个插件空格或换行隔开
plugins=(git)
  1. 执行 exec zsh 重新启动 Zsh。

插件推荐

1、Git

提供与 Git 相关的别名和快捷方式,方便 Git 命令的使用。下面是部分 Git 别名。

别名命令别名命令
ggitghhgit help
gagit addglgit pull
gbgit branchgpgit push
gcogit checkoutgstgit status
gcamgit commit --all --messagegcmsggit commit --message
git diffgdgit clonegcl

插件地址:ohmyzsh/plugins/git · ohmyzsh/ohmyzsh (github.com)

2、z

使用 z 命令,可以快速跳转到最常用的目录。

假设你之前访问过目录 ~/var/backups。你可以无视文件夹路径,通过使用正则表达式匹配来快速访问它。

z backups

上述命令将快速跳转到最匹配 backups 的目录,即 ~/var/backups。这样,你可以更快速地进入到你经常访问的目录,而无须输入完整路径。

插件地址:ohmyzsh/plugins/z · ohmyzsh/ohmyzsh (github.com)

3、aliases

aliases 插件可以帮助列出已启用的其他插件当前可用的所有快捷方式。执行 als,即可查看所有别名。

插件地址:ohmyzsh/plugins/aliases · ohmyzsh/ohmyzsh (github.com)

4、sudo

sudo 插件可以通过按两次 esc,快速在当前命令前面添加 sudo 前缀。

插件地址:ohmyzsh/plugins/sudo · ohmyzsh/ohmyzsh (github.com)

5、you-should-use

you-should-use 插件提醒你应该使用一个现有的别名来执行刚刚输入的命令。还支持检测全局别名和 Git 别名。

# 下载插件
git clone https://github.com/MichaelAquilina/zsh-you-should-use.git $ZSH_CUSTOM/plugins/you-should-use

you-should-use 默认将在命令执行之前显示提醒消息。可以通过以下命令修改为命令执行之后显示。

vim ~/.zshrc

export YSU_MESSAGE_POSITION="after"

TfdBBWnFNJWyPhX

插件地址:MichaelAquilina/zsh-you-should-use

6、zsh-syntax-highlighting

zsh-syntax-highlighting 会根据输入命令的语法和正确性,以不同的颜色突出显示命令的各个部分。

# 安装插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

插件地址:zsh-users/zsh-syntax-highlighting

7、zsh-autosuggestions

zsh-autosuggestions 插件可以根据历史命令,智能提供输入建议,减少键入工作量,提高命令输入的速度和准确性。

# 安装插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

插件地址:zsh-users/zsh-autosuggestions

常用脚本

测速脚本

  • 作者:秋水逸冰 (teddysun.com)

  • 特点

    • 显示当前测试的各种系统信息;

    • 取自世界多处的知名数据中心的测试点,下载测试比较全面;

    • 支持 IPv6 下载测速;

    • IO 测试三次,并显示平均值。

wget -qO- bench.sh | bash

curl -Lso- bench.sh | bash

参考

如有疑问,请在评论区留言,我会尽快回复。觉得文章不错?点击右侧按钮可复制文章链接。

作者
See Yue
发布于
2024年1月10日
更新于
2024年4月3日
许可协议
评论区