Knowledge VaultReading Workbench
Reading Detail

【配置优化】我拿到VPS服务器必做的那些事

IDC Flare - 热门话题 · 2025-10-23
#教程
Open Original
archivedone

Snapshot Reader

Captured
该教程仅针对于Debian系统。

一、系统基本设置

1. 更新软件库

apt update -y && apt upgrade -y

2. 更新、安装必备软件

apt install sudo curl wget nano vim -y

3. 校正系统时间

将时区改为改成上海

sudo timedatectl set-timezone Asia/Shanghai
  • 查看当前时区:
timedatectl
  • 列出所有时区:
timedatectl list-timezones
  • 时间同步
# 检查时间同步状态
timedatectl status
# 启用自动时间同步
timedatectl set-ntp true
# 手动触发时间同步
systemctl restart systemd-timesyncd

如果需要更精确的时间同步,可以安装和使用NTP:

# 安装NTPsec
apt install ntpsec
# 启动并启用NTP服务
systemctl start ntpsec
# 设置开机自启
systemctl enable ntpsec
# 查看服务状态(确认是否正常运行)
sudo systemctl status ntpsec
# 验证时间同步是否生效(需先安装ntpstat)
apt install ntpstat
ntpstat

二、TCP参数调优

通过调整各种系统和网络参数来优化服务器的性能。

实现方法

  • 拥塞控制算法:通过慢启动、拥塞避免、快重传和快恢复等算法避免网络拥塞。不同的拥塞控制算法(如Cubic、BBR、Reno)适用于不同的网络环境。调优这些算法的参数可以在避免拥塞的同时最大化吞吐量。

  • 缓冲区管理:TCP的发送和接收缓冲区直接影响性能。缓冲区过小会限制吞吐量,过大则可能导致内存浪费和延迟增加。合理设置socket缓冲区大小需要考虑带宽延迟积和应用特性。

  • 超时和重传机制:RTO(重传超时)算法根据RTT动态调整超时时间。调优相关参数可以在网络条件变化时快速适应,减少不必要的重传,提高传输效率。

  • 连接管理优化:通过调整TIME_WAIT状态的管理、SYN队列大小、keepalive等参数提升服务器的并发处理能力和资源利用率。

手动开启BBR+FQ的步骤

  • 确认内核版本支持 BBR(需要 4.9+):
uname -r
  • 创建专门的配置文件( 避免直接修改 /etc/sysctl.conf):
sudo nano /etc/sysctl.d/yuju-bbr.conf
  • 在文件末尾添加以下内容:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
  • 使配置生效
sudo sysctl -p /etc/sysctl.d/yuju-bbr.conf

附汇总命令一行执行版:

sudo sh -c 'cat > /etc/sysctl.d/yuju-bbr.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF' && sudo sysctl -p /etc/sysctl.d/yuju-bbr.conf

查看TCP拥塞控制算法和队列调度器

# 查看当前使用的拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
# 查看系统支持的所有拥塞控制算法
sysctl net.ipv4.tcp_available_congestion_control
# 查看默认的队列调度器
sysctl net.core.default_qdisc
# 检查BBR模块是否加载
lsmod | grep bbr

三、添加 SWAP

在 Linux 系统中,SWAP(交换空间)是指一块磁盘空间,用于在物理内存(RAM)不足时,作为临时的扩展内存来使用。当系统的物理内存使用量接近饱和,Linux 内核会将一些不常使用的内存页交换到 SWAP 分区中,从而为当前运行的程序腾出更多的物理内存。当这些被交换出去的内存页再次被需要时,它们会被重新换回到物理内存中。SWAP 分区的存在可以在一定程度上避免由于物理内存不足导致系统性能严重下降或进程被强制终止的情况。

因此,SWAP 对于内存小的 VPS 非常有必要,可以提高我们的运行效率。

这里我们同样用脚本来添加。

wget -O swap.sh https://raw.githubusercontent.com/yuju520/Script/main/swap.sh && chmod +x swap.sh && clear && ./swap.sh

查看当前内存

free -m

四、安装 Docker、Docker-compose 以及修改配置

1. Docker

1.1 Docker 安装

1.1.1 非大陆服务器

wget -qO- get.docker.com | bash

curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

1.1.2 第三方 Docker 安装命令(中国大陆可用)

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

1.2 Docker相关命令

# 查看 Docker 版本
docker -v

# 开机自动启动
sudo systemctl enable docker

# 卸载 Docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo apt-get remove docker docker-engine
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

2. Docker-compose

Docker 从 18.06.0-ce 版本就开始自带 Docker Compose 工具,因此,我们只需要检验 Docker Compose 的版本。

查看 Docker Compose 版本

docker compose version

五、修改 SSH 端口

修改 SSH 端口通常有以下几个主要原因:

  1. 增强安全性:SSH 服务默认使用的 22 端口是攻击者经常扫描和尝试攻击的目标。通过将端口修改为一个不常见的数值,可以减少自动攻击和暴力破解的风险,因为攻击者通常会首先针对常见的默认端口进行攻击。

例如,如果攻击者使用自动化工具扫描大量服务器,这些工具可能主要集中在 22 端口。而修改了端口后,就降低了被这类工具轻易发现和攻击的可能性。

  1. 减少误连接和非法访问尝试:一些网络环境中可能存在大量的随机连接请求或非法访问尝试,针对默认的 22 端口。更改端口可以减少这类无意义的连接请求。

假设您的服务器处于一个公共网络环境中,经常会收到大量的随机连接尝试,其中很多是针对常见端口的。修改 SSH 端口可以减少这类不必要的干扰。

方法:修改/etc/ssh/sshd_config中Port的参数为Port 55520
用命令行将默认的 22 端口修改为 55520

sudo sed -i 's/^#\?Port 22.*/Port 55520/g' /etc/ssh/sshd_config

重启 sshd 服务

sudo systemctl restart sshd

六、密钥登录

在生成密钥之前,先解释一下公钥和私钥的使用。

  • 私钥 :只需要存放在客户端 (发起连接的机器)
  • 公钥 :需要存放在服务器端 (被连接的机器)

在大多数人的使用场景下,应该是使用Windows系统作为发起连接的一方。
因此,我们生成密钥后,需要将私钥存放在Windows机器上(或SSH客户端中),并将公钥存放至被连接的机器上(也就是VPS)。

1. 生成密钥(非特殊需要一路回车即可)

ssh-keygen -t ed25519 -f ~/.ssh/server1 -C "[email protected]"

参数说明:

参数 可选值 说明
-t ed25519【推荐】、rsa、ecdsa、dsa、ecdsa-sk 指定密钥类型
-f 指定输出文件名
-C 添加注释(通常是邮箱地址)
-b RSA建议2048或4096位 指定密钥长度

Tips:Windows端操作需要下载并安装Git Bash(在Git Bash内执行)

2. 查看密钥

# 查看server1公钥内容
cat ~/.ssh/server1.pub
# 查看server1私钥内容
cat ~/.ssh/server1

[!success]
此时你已经成功生成公钥和私钥!

接下来我们需要在VPS端配置公钥。

3. 在VPS写入公钥

echo "你的公钥内容" >> ~/.ssh/authorized_keys

4. 设置正确权限

# 设置密钥相关的权限
chmod 700 ~/.ssh
# 授权密钥权限
chmod 600 ~/.ssh/authorized_keys

5. 设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,调整相关选项:

RSAAuthentication yes
PubkeyAuthentication yes

或直接使用命令

sudo sed -i 's/^#\?RSAAuthentication.*/RSAAuthentication yes/g' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config

调整后重启SSH服务

service sshd restart

[!success]
此时你已经成功在VPS上配置公钥!

接下来我们需要在Windows端(或SSH客户端)配置私钥。

6. 在主控端配置私钥

6.1 Windows端配置

6.1.1 下载并安装Git Bash

6.1.2 手动在C:\Users\你的用户名\.ssh\下创建config文件(手动和命令行均可)

nano ~/.ssh/config

在其中添加配置内容:

Host server1
    HostName 123.123.123.123
    User root
    Port 55520
    IdentityFile C:\Users\Administrator\.ssh\id_rsa

备注:

参数名 备注
myserver 可自定义的别名
HostName VPS的公网IP
User 登录的用户名
Port SSH端口
IdentityFile 私钥的文件地址

6.1.3 检测是否成功配置

在Git Bash中进行SSH连接

ssh server1

[!success]
此时应该不需要输入密码就可以直接连接!

6.2 SSH客户端

将私钥填入或将私钥文件拖入即可。

7. 限制密码登录(在确保SSH能通过密钥登录后使用!)

编辑 /etc/ssh/sshd_config 文件,调整相关选项:

PasswordAuthentication no

或直接使用命令

sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config

调整后重启SSH服务

service sshd restart

七、安装 fail2ban

1. 安装 fail2ban

apt install fail2ban

2. 配置 fail2ban

fail2ban 的配置文件通常位于 /etc/fail2ban/ 目录下,fail2ban 的.conf 配置文件都是可以被.local 覆盖,所以配置方式建议是添加.local 文件,不修改原来的配置文件。

nano /etc/fail2ban/jail.local

配置文件如下:

[DEFAULT]
#忽略的IP列表,不受设置限制(白名单)
ignoreip = 127.0.0.1

#允许ipv6
allowipv6 = auto

#日志修改检测机制(gamin、polling和auto这三种)
backend = systemd

#针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置

[sshd]

#是否激活此项(true/false)
enabled = true

#过滤规则filter的名字,对应filter.d目录下的sshd.conf
filter = sshd

#ssh端口
port = ssh

#动作的相关参数
action = iptables[name=SSH, port=ssh, protocol=tcp]

#检测的系统的登陆日志文件
logpath = /var/log/secure

#屏蔽时间,单位:秒
bantime = 86400

#这个时间段内超过规定次数会被ban掉
findtime = 86400

#最大尝试次数
maxretry = 3

Ctrl+S 保存并退出

设置开机自动启动 fail2ban

sudo systemctl enable fail2ban

重新启动 fail2ban

sudo systemctl restart fail2ban

查看 fail2ban 的状态

sudo systemctl status fail2ban

查看所有可用 jail 的状态

fail2ban-client status

感谢你的观看和点赞,你的每一个小心心都会激励我写出更多文章

189 个帖子 - 142 位参与者

阅读完整话题