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.pswp.cn/diannao/91135.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91135.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91135.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在服務器上運行一個github項目

一、事情的緣起 今天一個朋友向我推薦了小紅書上的一個視頻&#xff0c;我看了一下這是一個在演示TypeWords項目的視頻。這個項目是Github上采用vue來編寫的一個開源項目。我進入該項目后看到了給出的樣例網址2study.top&#xff0c;然后到上面看了一下。我發現這是一個通過打…

7.14 Java基礎|String 和StringBuilder

補充注意&#xff1a;1、StringBuilder 的 append 方法可以接收整數類型的參數&#xff0c;并將其自動轉換為字符串后添加到 StringBuilder 中2、該方法適用于所有基本數據類型&#xff08;如 long、double 等&#xff09;和對象&#xff08;通過調用其 toString() 方法&#x…

React 第六十九節 Router中renderMatches的使用詳解及注意事項

前言 renderMatches 是 React Router 的一個高級實用函數&#xff0c;用于根據路由匹配結果渲染對應的組件樹。它提供了對路由渲染過程的底層控制能力&#xff0c;特別適用于自定義路由渲染邏輯的場景。 一、基本概念和功能 renderMatches 函數的作用是將路由匹配結果轉換為 Re…

esp8266-01S實現PPM波形

esp8266-01雖然小眾&#xff0c;但是功能可不能少。因航模需要讓ESP8266-01生成PPM波形。#include <ESP8266WiFi.h> #include <Ticker.h> // 僅用于延時函數替代#define PPM_PIN 2 // 使用 GPIO2 (需斷開串口上傳時的連接) #define CHANNELS 4 // PPM通道數量…

使用 pytest 測試框架構建自動化測試套件之一

pytest 是一個非常靈活且強大的測試框架&#xff0c;它支持簡單的單元測試到復雜的功能測試。顯著特點是其簡潔的語法&#xff0c;可以無需繼承 TestCase 類直接使用函數來編寫測試用例&#xff0c;并通過 assert語句 進行斷言。還支持參數化測試、豐富的插件系統。 pytest自動…

nacos docker 配置

docker.io/nacos 項目中國可用鏡像列表 | 高速可靠的 Docker 鏡像資源 1、Docker 拉取鏡像 docker pull nacos/nacos-server:v2.1.0 2、創建宿主機掛載目錄 mkdir -p /mydata/nacos/logs/ mkdir -p /mydata/nacos/conf/ AI寫代碼 3、啟動nacos并復制文件到宿主機&#xff0…

Django 模板(Template)

1. 模板簡介 作為 Web 開發框架,Django 提供了模板,可以很便利的動態生成 HTML。模版系統致力于表達外觀,而不是程序邏輯。 模板的設計實現了業務邏輯(view)與顯示內容(template)的分離,一個視圖可以使用任意一個模板,一個模板可以供多個視圖使用。 模板包含: HTM…

Word 文字編輯狀態下按回車換行后是非正文格式

在Word里編輯時&#xff0c;按回車后新段落突然變成標題1、標題2這類格式&#xff0c;不再是正文樣式&#xff0c;這通常是因為「正文」的樣式設置出了問題——可能被默認設置成“后續段落自動應用標題1/標題2格式”了。 修改方法很簡單&#xff1a; 找到并打開「正文」樣式的修…

PySide6 UI 靈活性:QToolBar 的浮動與停靠及 QSplitter 的可調整面板

PySide6 UI 靈活性&#xff1a;QToolBar 的浮動與停靠及 QSplitter 的可調整面板 在現代桌面應用程序開發中&#xff0c;提供靈活且用戶友好的界面至關重要。PySide6&#xff08;Qt for Python&#xff09;提供了強大的工具來構建這樣的界面。本文將深入探討兩個關鍵的 PySide6…

B4016 樹的直徑

B4016 樹的直徑 - 洛谷 題目描述 給定一棵 n 個結點的樹&#xff0c;樹沒有邊權。請求出樹的直徑是多少&#xff0c;即樹上最長的不重復經過一個點的路徑長度是多少。 輸入格式 第一行輸入一個正整數 n&#xff0c;表示結點個數。 第二行開始&#xff0c;往下一共 n - 1 行…

【一維 前綴和+差分】

一、一維前綴和 1.1 定義 給定一個數組 a[1..n]&#xff0c;其前綴和數組 pre[1..n] 定義為&#xff1a; pre[i]a[1]a[2]?a[i] pre[i] a[1] a[2] \dots a[i] pre[i]a[1]a[2]?a[i] 即 pre[i] 表示原數組從第 1 項到第 i 項的和。 1.2 構建 int a[N], pre[N]; for (int i …

Spring Boot 雙數據源配置

文章目錄什么是雙數據源&#xff1f;為什么需要雙數據源&#xff1f;核心實現原理完整示例注意什么是雙數據源&#xff1f; 雙數據源是指在一個應用程序中同時配置和使用兩個不同的數據庫連接。比如&#xff1a; 一個連接訂單數據庫&#xff0c;處理業務數據一個連接用戶中心…

【Java】【力扣】102.二叉樹層序遍歷

思路一個輔助隊列&#xff08;初始化隊列&#xff1a;根節點入隊&#xff09;一個節點 出隊&#xff0c;他的左右孩子入隊循環 直到隊列為空舉例代碼public List<List<Integer>> levelOrder(TreeNode root) {if (rootnull){return new ArrayList<List<Intege…

為什么有些PDF無法復制文字?原理分析與解決方案

在日常辦公和學習中&#xff0c;我們經常會從PDF文件中復制文字&#xff0c;用于編輯、引用、整理筆記。但你是否也遇到過這樣的情況&#xff1a;有些PDF中的文字根本無法選中&#xff0c;更無法復制粘貼&#xff1f; 看起來像是“文字”&#xff0c;但操作上卻完全無效——這…

LabVIEW瀏覽器ActiveX事件交互

?程序圍繞 WebBrowser ActiveX 控件&#xff0c;借 “Reg Event Callback” 注冊標題變更回調&#xff0c;“Callback - Title Change.vi” 處理標題數據&#xff0c;“Monitor...” 響應 URL 變更&#xff0c;“Unregister...” 清理資源&#xff0c;實現瀏覽器事件交互與管控…

C++后端面試八股文

一、C 語言基礎與底層原理請解釋 new / delete 和 malloc / free 的區別和聯系&#xff0c;以及使用它們時需要注意什么new 和 delete 是C的??運算符&#xff08;Operator&#xff09;??。這意味著它們可以被類&#xff08;通過 operator new 和 operator delete&#xff0…

基礎分類模型及回歸簡介(一)

一、先搞懂兩個核心任務&#xff1a;分類和回歸咱們生活中總遇到要 “判斷” 或 “預測” 的事&#xff1a;比如看到一個水果&#xff0c;判斷是蘋果還是橘子 —— 這就是分類&#xff08;結果是 “類別”&#xff09;&#xff1b;比如根據西瓜的大小、顏色&#xff0c;猜它能賣…

【LeetCode 熱題 100】114. 二叉樹展開為鏈表——(解法二)分治

Problem: 114. 二叉樹展開為鏈表 給你二叉樹的根結點 root &#xff0c;請你將它展開為一個單鏈表&#xff1a; 展開后的單鏈表應該同樣使用 TreeNode &#xff0c;其中 right 子指針指向鏈表中下一個結點&#xff0c;而左子指針始終為 null 。 展開后的單鏈表應該與二叉樹 先序…

【WPF】WPF 自定義控件 實戰詳解,含命令實現

&#x1f9e9;《WPF 自定義控件》實戰詳解本文將圍繞如何編寫一個自定義控件&#xff08;如帶右鍵菜單的圖片控件 ImageView&#xff09;&#xff0c;逐步講解其定義、命令綁定與 ContextMenu 中常見的語法技巧。&#x1f9f1; 一、創建一個 WPF 自定義控件的步驟 WPF 中自定義…

Flink 2.0 DataStream算子全景

在實時流處理中&#xff0c;Apache Flink的DataStream API算子是構建流處理 pipeline 的基礎單元。本文基于Flink 2.0&#xff0c;聚焦算子的核心概念、分類及高級特性。 一、算子核心概念&#xff1a;流處理的"原子操作 1. 數據流拓撲&#xff08;Stream Topology&#x…