找回密码
 立即注册
查看: 43|回复: 7

[技术分享] 【配置优化】我拿到VPS服务器必做的那些事

[复制链接]

4

主题

6

回帖

50

积分

注册会员

积分
50
小豬 发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
该教程仅针对于Debian系统。
一、系统基本设置
1. 更新软件库
  1. apt update -y && apt upgrade -y
复制代码


2. 更新、安装必备软件
  1. apt install sudo curl wget nano vim -y
复制代码



3. 校正系统时间
将时区改为改成上海
  1. sudo timedatectl set-timezone Asia/Shanghai
复制代码

查看当前时区:

  1. timedatectl
复制代码

列出所有时区:

  1. timedatectl list-timezones
复制代码

时间同步
  1. # 检查时间同步状态
  2. timedatectl status
  3. # 启用自动时间同步
  4. timedatectl set-ntp true
  5. # 手动触发时间同步
  6. systemctl restart systemd-timesyncd
复制代码



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

  1. # 安装NTP
  2. apt install ntp
  3. # 启动并启用NTP服务
  4. systemctl start ntp
  5. systemctl enable ntp
  6. # 查看NTP同步状态
  7. ntpq -p
复制代码
通过调整各种系统和网络参数来优化服务器的性能。

实现方法:
  • 拥塞控制算法:通过慢启动、拥塞避免、快重传和快恢复等算法避免网络拥塞。不同的拥塞控制算法(如Cubic、BBR、Reno)适用于不同的网络环境。调优这些算法的参数可以在避免拥塞的同时最大化吞吐量。
  • 缓冲区管理:TCP的发送和接收缓冲区直接影响性能。缓冲区过小会限制吞吐量,过大则可能导致内存浪费和延迟增加。合理设置socket缓冲区大小需要考虑带宽延迟积和应用特性。
  • 超时和重传机制:RTO(重传超时)算法根据RTT动态调整超时时间。调优相关参数可以在网络条件变化时快速适应,减少不必要的重传,提高传输效率。
  • 连接管理优化:通过调整TIME_WAIT状态的管理、SYN队列大小、keepalive等参数提升服务器的并发处理能力和资源利用率。


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

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

这里我提供了一个简易的脚本进行相应的优化调整。(修改了部分参数设置)

  1. wget -qO TuneTCP.sh https://raw.githubusercontent.com/yuju520/Script/main/TuneTCP.sh && chmod +x TuneTCP.sh && clear && ./TuneTCP.sh
复制代码
因此,SWAP 对于内存小的 VPS 非常有必要,可以提高我们的运行效率。
这里我们同样用脚本来添加。

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

查看当前内存

  1. free -m
复制代码


四、安装 Docker、Docker-compose 以及修改配置
1. Docker
1.1 Docker 安装
1.1.1 非大陆服务器
  1. wget -qO- get.docker.com | bash
复制代码


  1. curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
复制代码


1.1.2 第三方 Docker 安装命令(中国大陆可用)
  1. bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
复制代码


1.2 Docker相关命令
  1. # 查看 Docker 版本
  2. docker -v

  3. # 开机自动启动
  4. sudo systemctl enable docker

  5. # 卸载 Docker
  6. sudo apt-get purge docker-ce docker-ce-cli containerd.io
  7. sudo apt-get remove docker docker-engine
  8. sudo rm -rf /var/lib/docker
  9. sudo rm -rf /var/lib/containerd
复制代码


2. Docker-compose
Docker 从 18.06.0-ce 版本就开始自带 Docker Compose 工具,因此,我们只需要检验 Docker Compose 的版本。
查看 Docker Compose 版本
  1. docker compose version
复制代码


五、修改 SSH 端口
修改 SSH 端口通常有以下几个主要原因:
  • 增强安全性:SSH 服务默认使用的 22 端口是攻击者经常扫描和尝试攻击的目标。通过将端口修改为一个不常见的数值,可以减少自动攻击和暴力破解的风险,因为攻击者通常会首先针对常见的默认端口进行攻击。
例如,如果攻击者使用自动化工具扫描大量服务器,这些工具可能主要集中在 22 端口。而修改了端口后,就降低了被这类工具轻易发现和攻击的可能性。
  • 减少误连接和非法访问尝试:一些网络环境中可能存在大量的随机连接请求或非法访问尝试,针对默认的 22 端口。更改端口可以减少这类无意义的连接请求。
假设您的服务器处于一个公共网络环境中,经常会收到大量的随机连接尝试,其中很多是针对常见端口的。修改 SSH 端口可以减少这类不必要的干扰。
方法:修改/etc/ssh/sshd_config中Port的参数为Port 55520
用命令行将默认的 22 端口修改为 55520

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

重启 sshd 服务

  1. sudo systemctl restart sshd
复制代码


六、密钥登录
在生成密钥之前,先解释一下公钥和私钥的使用。
  • 私钥 :只需要存放在客户端 (发起连接的机器)
  • 公钥 :需要存放在服务器端 (被连接的机器)
在大多数人的使用场景下,应该是使用Windows系统作为发起连接的一方。
因此,我们生成密钥后,需要将私钥存放在Windows机器上(或SSH客户端中),并将公钥存放至被连接的机器上(也就是VPS)。
1. 生成密钥(非特殊需要一路回车即可)
  1. ssh-keygen -t ed25519 -f ~/.ssh/server1 -C "user@example.com"
复制代码

参数说明:

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

Tips:Windows端操作需要下载并安装Git Bash(在Git Bash内执行)
git-scm.comGit - Downloading Package

2. 查看密钥
  1. # 查看server1公钥内容
  2. cat ~/.ssh/server1.pub
  3. # 查看server1私钥内容
  4. cat ~/.ssh/server1
复制代码

Success
此时你已经成功生成公钥和私钥!

接下来我们需要在VPS端配置公钥。
3. 在VPS写入公钥
  1. echo "你的公钥内容" >> ~/.ssh/authorized_keys
复制代码


4. 设置正确权限
  1. # 设置密钥相关的权限
  2. chmod 700 ~/.ssh
  3. # 授权密钥权限
  4. chmod 600 ~/.ssh/authorized_keys
复制代码


5. 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,调整相关选项:

  1. RSAAuthentication yes
  2. PubkeyAuthentication yes
复制代码

或直接使用命令

  1. sudo sed -i 's/^#\?RSAAuthentication.*/RSAAuthentication yes/g' /etc/ssh/sshd_config
  2. sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
复制代码

调整后重启SSH服务

  1. service sshd restart
复制代码

Success
此时你已经成功在VPS上配置公钥!

接下来我们需要在Windows端(或SSH客户端)配置私钥。
6. 在主控端配置私钥
6.1 Windows端配置6.1.1 下载并安装Git Bash
git-scm.comGit - Downloading Package

6.1.2 手动在C:\Users\你的用户名\.ssh\下创建config文件(手动和命令行均可)
  1. nano ~/.ssh/config
复制代码

在其中添加配置内容:

  1. Host server1
  2.     HostName 123.123.123.123
  3.     User root
  4.     Port 55520
  5.     IdentityFile C:\Users\Administrator\.ssh\id_rsa
复制代码

备注:

[td]
参数名
备注
myserver可自定义的别名
HostNameVPS的公网IP
User登录的用户名
PortSSH端口
IdentityFile私钥的文件地址

6.1.3 检测是否成功配置
在Git Bash中进行SSH连接

  1. ssh server1
复制代码

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

6.2 SSH客户端
将私钥填入或将私钥文件拖入即可。
7. 限制密码登录(在确保SSH能通过密钥登录后使用!)
编辑 /etc/ssh/sshd_config 文件,调整相关选项:

  1. PasswordAuthentication no
复制代码

或直接使用命令

  1. sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
复制代码

调整后重启SSH服务

  1. service sshd restart
复制代码


七、安装 fail2ban
1. 安装 fail2ban
  1. apt install fail2ban
复制代码


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

  1. nano /etc/fail2ban/jail.local
复制代码

配置文件如下:

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

  4. #允许ipv6
  5. allowipv6 = auto

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

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

  9. [sshd]

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

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

  14. #ssh端口
  15. port = ssh

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

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

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

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

  24. #最大尝试次数
  25. maxretry = 3
复制代码

Ctrl+S 保存并退出
设置开机自动启动 fail2ban

  1. sudo systemctl enable fail2ban
复制代码

重新启动 fail2ban

  1. sudo systemctl restart fail2ban
复制代码

查看 fail2ban 的状态

  1. sudo systemctl status fail2ban
复制代码

查看所有可用 jail 的状态

  1. fail2ban-client status
复制代码


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


回复

使用道具 举报

4

主题

6

回帖

50

积分

注册会员

积分
50
 楼主| 小豬 发表于 前天 22:29 | 显示全部楼层
TCP部分放弃了之前的bbrx,还是改用官方的,并且按照机器配置进行动态调整
回复 支持 反对

使用道具 举报

4

主题

6

回帖

50

积分

注册会员

积分
50
 楼主| 小豬 发表于 前天 22:29 | 显示全部楼层
tcp调优的话,如果没遇到瓶颈最好的优化就是不调,开个bbr就差不多了,bbr也不太需要大缓冲

ssh的话,要安全其实直接把密码登录关掉就好了,这样其他的安全措施也就不太需要做
回复 支持 反对

使用道具 举报

4

主题

6

回帖

50

积分

注册会员

积分
50
 楼主| 小豬 发表于 前天 22:32 | 显示全部楼层
我选用的是比较温和的调试策略,需要的可以调,不需要的可以自行只开启bbr和fq。
回复 支持 反对

使用道具 举报

11

主题

10

回帖

131

积分

注册会员

积分
131
湖光倒影 发表于 前天 22:33 | 显示全部楼层
一键生成你的密钥并限制密码登录
wget -O key.sh https://raw.githubusercontent.com/yuju520/Script/main/key.sh && chmod +x key.sh && clear && ./key.sh
!!!注意:请牢记你生成的密钥,否则会有无法连接 SSH 的后果。!!!

??????牢记密钥?最强大脑?
正确做法:
  • 在自己的电脑上运行 ssh-keygen
  • 找到~/.ssh/ed25519.pub
  • 复制该文件的文本内容
  • 追加到服务器的~/.ssh/authorized_keys

回复 支持 反对

使用道具 举报

5

主题

10

回帖

65

积分

注册会员

积分
65
VIERvSkZ 发表于 前天 22:35 | 显示全部楼层
私钥永远不要离开设备。公钥才能到处分发。
回复 支持 反对

使用道具 举报

5

主题

7

回帖

62

积分

注册会员

积分
62
为爱 发表于 前天 22:45 | 显示全部楼层
正时间系统那里,查看时区后,可以同时看下时间同步是否有打开
  1. System clock synchronized: yes
复制代码

如果没有,可以
  1. sudo apt install ntp
  2. sudo timedatectl set-ntp true
复制代码

因为vless reality xtls和shadowsocks 2022都加了时间校验,如果没开启时间同步,小白刚接触的时候,很容易因此无法连接代理(我当初也是)
回复 支持 反对

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
007 发表于 昨天 16:34 | 显示全部楼层
都是大佬啊
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|IDCeve

GMT+8, 2025-10-22 00:22 , Processed in 0.053541 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表