少女祈祷中...

阅读须知

  1. 所有内容都基于Debian和vps拥有良好的网络环境
  2. 非root用户请使用sudo指令
  3. 本文面向小白,所以不少废话
  4. 本文不会及时更新,一切请以官方文档为准
  5. 请善用目录与搜索(CTRL + F

基础设置

1.更新软件包

{.line-numbers}
1
apt update && apt upgrade && apt full-upgrade

2.安装基础工具

{.
1
apt install neovim curl unzip sudo wget

3.更换默认编辑器为Neovim

  1. 卸载nano

    {.line-numbers}
    1
    apt-get remove nano
  2. 更换默认编辑器

    运行

    1
    update-alternatives --config editor

    出现如下界面

    选择 0 (neovim automode),回车确认

4.设置时区

{.line-numbers}
1
2
timedatectl show        #查看系统时区
timedatectl set-timezone Asia/Shanghai #修改系统时区为东八区

安全配置

1.添加新用户

添加新用户
以下用户名都以asuka为例子,请自行更改

{.line-numbers}
1
adduser asuka

添加新用户到 sudo 用户组

{.line-numbers}
1
usermod -aG sudo asuka

检查新用户是否在sudo用户组中

{.line-numbers}
1
groups asuka

相关补充

{.line-numbers}
1
2
exit            # 退出当前用户登录
passwd asuka # 重设asuka密码

2. 修改SSH登录端口

vim基本指令介绍

  • 若指令的第一个字符为:/?,需在normal模式下输入,通常是先按ESC回到normal模式,然后直接输入指令,输入完按Enter才会执行
  • vim指令区分大小写
{.line-numbers}
1
2
3
4
5
6
:set nu     # 显示行数
i # 光标处进入编辑模式
/ # 搜索
行数G # 跳转到第n行
ESC # 退出当前模式
:wq # 退出并保存

更改端口前,把 22 端口也添加上,等 ssh 能通过其他端口连接后,再注释掉22端口。

打开SSH配置文件

{.line-numbers}
1
vim /etc/ssh/sshd_config
  • 找到

    #Port 22

    (一般在14行,所以可以14G跳转到这)

  • 去掉注释(按i进入编辑模式)

  • 添加新端口号,端口号范围为 1024 - 65535,以端口号为6543为例

    Port 22
    Port 6543

  • ESC退出当前模式

  • 输入:wq退出并保存

重启SSHD服务,让配置生效

{.line-numbers}
1
systemctl restart sshd.service
  • 测试是否有效

    {.line-numbers}
    1
    2
    3
    4
    5
    # 退出当前用户登陆
    exit

    # 以用户名为root,服务器IP地址为1.1.1.1为例
    ssh -p 6543 root@1.1.1.1
  • 重新打开ssh配置文件,将22端口注释

如遇到 ssh 连接总自己断开,还可以添加添加配置:

{.line-numbers}
1
2
ClientAliveInterval 30     # 每30S服务器向客户端发送一个"alive"消息
ClientAliveCountMax 6 # 服务器允许客户端连续忽略6个"alive"消息

3.配置SSH免密登录

Windows终端工具建议使用Git BashCmder,避免出现默认终端识别不出命令的情况

本机指当前使用机器(你在操作的机器)
服务器指需要远程服务器(你需要远程连接的机器)

1.生成密钥

在本机终端下下输入

{.line-numbers}
1
ssh-keygen      # 用户在 ~/.ssh 目录生成公钥和私钥

根据需要设置,可一路回车全默认

2.上传公钥

将本机公钥文件上传到远程服务器

{.line-numbers}
1
2
3
4
5
6
7
8
# 进入.ssh文件夹
cd ~/.ssh

# 上传该文件夹下的公钥文件
ssh-copy-id -i ./密钥文件名.pub -p 端口 用户名@服务器IP
# 根据提示输入密码

# 公钥文件路径可用绝对路径(路径分隔符是\\而不是\),公钥文件后缀名为.pub

例子

{.line-numbers}
1
2
3
4
5
6
# 绝对路径例子
ssh-copy-id -i C:\\Users\\本机用户名\\.ssh\\id_rsa.pub -p 6543 root@1.1.1.1

# 相对路径例子
cd ~/.ssh
ssh-copy-id -i ./id_rsa.pub -p 6543 root@1.1.1.1

3.登录验证

{.line-numbers}
1
ssh -p 6543 root@1.1.1.1

4.更快捷的登录(SSH登录名配置)

在密钥文件所在文件夹创建配置文件config
文件名为config,无后缀

  • 密钥文件默认位于 ~/.ssh 文件夹,例如C:\Users\本机用户名\.ssh

内容如下

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
Host 一个别名 # 随便取,用于ssh登录的名字
User 用户名 # 需要登录的远程服务器用户名
HostName 远程服务器IP
Port 服务器的ssh端口
IdentityFile ~/.ssh/id_rsa # 私钥文件,无后缀

# 例子
Host vps-root # 随便取,用于ssh登录的名字
User root # 需要登录的远程服务器用户名
HostName 1.1.1.1
Port 6543
IdentityFile ~/.ssh/id_rsa

保存后,登录一下试试

{.line-numbers}
1
2
3
4
ssh 一个别名

# 例子
ssh vps-root

4.限制root用户ssh登录或密码登录

进入配置文件:

{.line-numbers}
1
vim /etc/ssh/sshd_config

找到并修改PermitRootLogin:

{.line-numbers}
1
2
3
4
5
# 默认为yes,若修改为no,则限制root用户通过ssh登录
PermitRootLogin no

# 如果只是想限制root用户用密码登录,但能用密钥登录
PermitRootLogin without-password

重启ssh服务,使修改生效:

{.line-numbers}
1
systemctl restart sshd

5.启用防火墙

安装ufw

{.line-numbers}
1
apt install ufw

打开ssh应用的默认端口

{.line-numbers}
1
ufw allow ssh

如果 ssh 监听其他端口,就打开那个端口

{.line-numbers}
1
ufw allow 端口

启用防火墙(启用之前一定要保证,SSH 的端口已经开了,不然登出之后就登不进来了)

{.line-numbers}
1
ufw enable

添加SWAP

{.line-numbers}
1
2
3
4
5
6
7
8
# 创造1G的swap
dd if=/dev/zero of=/mnt/swap bs=1M count=1024

# 设置交换分区文件
mkswap /mnt/swap

# 启动swap
swapon /mnt/swap

设置开机自启用swap

{.line-numbers}
1
vim /etc/fstab

添加/mnt/swap swap swap defaults 0 0

配置LNMP环境

安装Nginx

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
# 更新Debian系统内的软件包
sudo apt update

# 安装Nginx
sudo apt -y install nginx

# 查看Nginx版本
nginx -v

# nginx默认使用80端口,需要让防火墙开放80端口
sudo ufw allow 80

安装并配置MySQL

安装MySQL

安装 Mysql 的源。可以从这个网页获取最新版本的链接:
https://dev.mysql.com/downloads/repo/apt/

点击Download
复制No thanks,just start my download链接地址。这就是要用wget下载的包

获取软件包

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
# 安装 Mysql 时,需要判断你的发行版,因此需要 lsb-release
sudo apt install lsb-release

# 下载最新版本包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb

# 安装该包
sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb

# 删除该包
rm mysql-apt-config_0.8.30-1_all.deb

安装

{.line-numbers}
1
2
3
4
5
#更新软件包
sudo apt update

#安装MySQL
sudo apt-get install mysql-server

安装过程会提示你设置Mysql的root用户密码,输入即可

然后就可以使用了

{.line-numbers}
1
2
mysql --version     # 检查版本
mysql --help # 查看帮助

配置MySQL

假设你在安装 Mysql 时,按照提示设置了 root 用户的密码

1.

{.line-numbers}
1
2
3
4
5
6
# 使用root用户连接
mysql -u root -p

# 为了避免特殊bug,alter一下用户
# 将mynewpassword替换为你自己密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

本示例中密码以Mysql@1234为例,示例命令:

{.line-numbers}
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';

面板安装(可选)

安装Podman

{.line-numbers}
1
sudo apt-get -y install podman

安装Cockpit

官方文档

{.line-numbers}
1
2
3
4
. /etc/os-release
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" > \
/etc/apt/sources.list.d/backports.list
apt update
命令解释
  1. 1
    cat /etc/os-release
    • 这条命令会显示当前系统的发行版信息,包括版本号、代号等。输出内容通常包含类似于以下的键值对:
    1
    2
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    VERSION_CODENAME=bullseye
  2. 1
    echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" > /etc/apt/sources.list.d/backports.list
    • 这条命令利用echo命令将一个字符串写入到文件/etc/apt/sources.list.d/backports.list中。该字符串定义了Debian backports软件源的地址。
    • ${VERSION_CODENAME}是一个变量,它的值来自于/etc/os-release文件中的VERSION_CODENAME,例如,bullseye
  3. 1
    apt update
    • 这条命令更新系统中可用的软件包列表,使得新的backports源中的软件包可以被系统识别和使用。

cockpit默认监听9090端口,让防火墙打开9090端口

{.line-numbers}
1
ufw allow 9090

启动cockpit并设置为自动启动

{.line-numbers}
1
2
sudo systemctl start cockpit.socket
sudo enable cockpit.socket

查看状态

{.line-numbers}
1
systemctl status cockpit.socket

启动后就可以在本机浏览器输入https://服务器ip地址:9090控制服务器了

用户名 服务器用户名
密码 服务器密码

用Cockpit管理Podman

安装cockpit-podman

{.line-numbers}
1
apt install cockpit-podman

打开浏览器进入Cockpit
左侧就有Podman容器