当前位置: 首页 > news >正文

Ubuntu 22.04 Server 虚拟机初始化配置与优化指南

✅ Ubuntu 22.04 本地/通用服务器初始化配置清单

1. 设置时区

sudo timedatectl set-timezone Asia/Shanghai

2. 防火墙配置(UFW)

sudo ufw enable
sudo ufw default deny
# 可选放通SSH或其他端口
sudo ufw allow 22/tcp
# 查看状态
sudo ufw status
# 禁用防火墙
# sudo ufw disable

3. 安装常用基础软件

sudo apt update && sudo apt install -y vim wget lrzsz bash-completion tree lsof rsync unzip net-tools

4. 优化资源限制(limits.conf)

sudo tee -a /etc/security/limits.conf << 'EOF'
root soft nofile 65535
root hard nofile 65535
root soft stack unlimited
root hard stack unlimited
root soft nproc 127962
root hard nproc 127962
root soft core unlimited
root hard core unlimited
EOF

5. 配置静态IP(手动编辑)

sudo vi /etc/netplan/00-installer-config.yaml
sudo netplan apply

6. 彻底关闭 IPv6

sudo tee -a /etc/sysctl.conf << 'EOF'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
sudo sysctl -p

7. 删除 Snap 系统(节省空间、提高兼容性)

snap list
sudo snap remove --purge lxd
sudo snap remove --purge core20
sudo snap remove --purge snapd
sudo apt remove --autoremove snapd

8. 配置国内 DNS 并关闭 DNSStubListener

sudo vi /etc/systemd/resolved.conf

修改为:

[Resolve]
DNS=223.5.5.5
DNSStubListener=no

然后执行:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved

9. 开启系统时间同步(默认使用 systemd-timesyncd

sudo timedatectl set-ntp true

如需自定义 NTP:

sudo vi /etc/systemd/timesyncd.conf

10. 禁用 Swap(适用于纯内存型虚拟化环境)

sudo swapoff -a
sudo sysctl -w vm.swappiness=0
sudo sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

11. SSH 启用 root 登录(仅限内网、测试环境,生产不推荐)

sudo vi /etc/ssh/sshd_config

修改或添加:

PermitRootLogin yes

然后重启 SSH 服务:

sudo systemctl restart ssh

🛠️ 一键初始化优化交互脚本

#!/bin/bashset -efunction prompt() {read -rp "$1 [y/N]: " responsecase "$response" in[yY][eE][sS]|[yY]) return 0 ;;*) return 1 ;;esac
}echo "🌐 Ubuntu 22.04 云/虚拟化服务器初始化交互脚本"# 1. 设置时区
if prompt "1️⃣ 设置时区为 Asia/Shanghai?"; thentimedatectl set-timezone Asia/Shanghaiecho "✅ 时区已设置为 Asia/Shanghai"
fi# 2. 安装常用工具
if prompt "2️⃣ 安装常用软件包(vim wget net-tools 等)?"; thenapt update && apt install -y vim wget lrzsz bash-completion tree lsof rsync unzip net-toolsecho "✅ 常用工具安装完成"
fi# 3. 优化 limits.conf
if prompt "3️⃣ 配置系统资源限制(/etc/security/limits.conf)?"; thencat >> /etc/security/limits.conf << EOF
root soft nofile 65535
root hard nofile 65535
root soft stack unlimited
root hard stack unlimited
root soft nproc 127962
root hard nproc 127962
root soft core unlimited
root hard core unlimited
EOFecho "✅ limits.conf 已配置"
fi# 4. 禁用 IPv6
if prompt "4️⃣ 禁用 IPv6?"; thencat >> /etc/sysctl.conf << EOF
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOFsysctl -pecho "✅ IPv6 已禁用"
fiif prompt "2️⃣ 修改 GRUB 参数彻底禁用 IPv6?(重启后生效)"; thenGRUB_FILE="/etc/default/grub"if grep -q "ipv6.disable=1" "$GRUB_FILE"; thenecho "🔁 GRUB 已包含 ipv6.disable=1,无需重复添加"elsesed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 ipv6.disable=1"/' "$GRUB_FILE"echo "✅ GRUB 参数已添加"update-grubfi
fi# 5. 删除 snap
if prompt "5️⃣ 删除 snap 及其组件(节省空间)?"; thensnap list || truesnap remove --purge lxd || truesnap remove --purge core20 || truesnap remove --purge snapd || trueapt remove --autoremove snapd -y || trueecho "✅ snap 已删除"
fi# 6. 配置 DNS
if prompt "6️⃣ 配置 DNS 为(223.5.5.5)并关闭 DNSStubListener?"; thensed -i '/^#*DNS=/c\DNS=223.5.5.5' /etc/systemd/resolved.confsed -i '/^#*DNSStubListener=/c\DNSStubListener=no' /etc/systemd/resolved.confln -sf /run/systemd/resolve/resolv.conf /etc/resolv.confsystemctl restart systemd-resolvedecho "✅ DNS 配置完成"
fi# 7. 开启时间同步
if prompt "7️⃣ 开启时间同步?"; thentimedatectl set-ntp trueecho "✅ NTP 时间同步已启用"
fi# 8. 禁用 Swap
if prompt "8️⃣ 禁用 Swap(建议内存足够情况下)?"; thenswapoff -asysctl -w vm.swappiness=0sed -ri '/^[^#]*swap/s@^@#@' /etc/fstabecho "✅ Swap 已禁用"
fi# 9. 防火墙配置(UFW)
if prompt "9️⃣ 启用防火墙(默认拒绝,放通22端口)?"; thenufw enableufw default denyufw allow 22/tcpecho "✅ 防火墙已启用,22端口已放行"
fi# 10. SSH 启用 Root 登录
if prompt "🔟 启用 root 用户 SSH 登录?(不推荐生产使用)"; thensed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_configsystemctl restart sshecho "✅ Root 登录已启用"
fiecho "🎉 所有选择的操作已完成 ✅"

保存为 init.sh,赋予执行权限并运行:

chmod +x init.sh
sudo ./init.sh

📌 建议后续补充(非必须):

  • 设置主机名(hostnamectl set-hostname
  • 创建新用户并设置免密sudo权限
  • 安装 fail2ban、防火墙策略等安全组件
  • 启用 BBR(TCP加速)
  • 开启日志轮转策略(logrotate)

http://www.dtcms.com/a/274538.html

相关文章:

  • 用Python制作抖音风格短视频:从图片到精美视频的完整指南
  • docker-compose安装常用中间件
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • VS 按F12 提示cannot navigate to the symbol under the caret
  • JavaSE——Object
  • 【实时Linux实战系列】现有应用迁移到实时环境的步骤
  • Web安全-Linux基础-01-初识Linux
  • 进程状态 + 进程优先级切换调度-进程概念(5)
  • 小智AI模型接入MCP
  • 【C++】内联函数inline以及 C++入门(4)
  • 【Linux】C++项目分层架构:核心三层与关键辅助
  • 构建一个简单的有监督的异常点检测项目
  • 如何让FastAPI与Celery完美联姻,打造高效异步任务处理系统?
  • 灰盒级SOA测试工具Parasoft SOAtest重新定义端到端测试
  • uniapp制作一个视频播放页面
  • 软件测试之单元测试
  • 【Luogu】每日一题——Day1. P3385 【模板】负环
  • 功能测试知识总结
  • 盲超分的核心概念
  • 飞书AI,正在成为零售企业的“靠谱辅助”
  • 用 ELK+Filebeat 提高50%问题排查效率,这套方案实测有效!
  • Spring MVC中异常处理
  • Visual Studio 2022 上使用ffmpeg
  • C语言/Keil的register修饰符
  • 【Freertos实战】零基础制作基于stm32的物联网温湿度检测(教程非常简易)持续更新中.........
  • SwiftUI的页面生命周期
  • 鸿蒙系统安全机制全解:安全启动 + 沙箱 + 动态权限实战落地指南
  • 如何配置 Conda 使用清华大学镜像源
  • SAP学习笔记 - 开发39 - RAP开发 BTP /DMO 官方既存测试数据的使用
  • 深入解析 TCP 连接状态与进程挂起、恢复与关闭