ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
Linux 伺服器

Linux 修改 SSH 埠與 root 密碼教程(含防火牆與 SELinux 設定)

7 個步驟 7 分鐘閱讀 23 次閱讀 0
本文目錄

預設的 22 埠每天都會遭到大量自動化暴力破解掃描,把 SSH 改到非標準埠並設定高強度 root 密碼,是伺服器上線後最基礎的加固措施。本文介紹 Linux 修改 SSH 埠與 root 密碼的完整步驟,包括編輯 sshd_config、在防火牆和 SELinux 中放行新埠、安全重啟 sshd 以及用 passwd 修改密碼。適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux。

修改埠時請保持當前 SSH 視窗不要關閉,並先同時保留 22 埠。確認新埠可以正常登入後,再關閉舊埠。萬一失聯,可通過客戶中心的 VNC 控制臺登入恢復。

步驟 1:備份並檢查 SSH 配置檔案

先備份 /etc/ssh/sshd_config,再檢視當前 Port 配置。新版系統可能在 /etc/ssh/sshd_config.d/ 目錄中還有額外的配置片段,也要一併檢查,避免設定被覆蓋。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
grep -nE '^#?Port' /etc/ssh/sshd_config
grep -rn '^Port' /etc/ssh/sshd_config.d/ 2>/dev/null

步驟 2:在 sshd_config 中修改 SSH 埠

用 vi 或 nano 編輯 sshd_config,去掉 Port 前面的 # 號,並新增一行新埠。建議選擇 1024–65535 之間、未被其他服務佔用的埠,下文以 2222 為例。過渡期間同時監聽 22 和新埠。

# /etc/ssh/sshd_config - keep 22 temporarily and add the new port
Port 22
Port 2222

步驟 3:在防火牆中放行新的 SSH 埠

CentOS、Rocky、AlmaLinux 預設使用 firewalld,Ubuntu 常用 ufw。如果系統啟用了防火牆卻沒有放行新埠,重啟 sshd 後就會無法連線。未啟用防火牆的系統可以跳過此步。

# CentOS / Rocky / AlmaLinux with firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

# Debian / Ubuntu with ufw
ufw allow 2222/tcp
ufw status

步驟 4:SELinux 中允許 SSH 使用新埠

在 SELinux 處於 Enforcing 狀態的 RHEL 系發行版上,sshd 只被允許監聽特定埠,必須用 semanage 把新埠登記為 ssh_port_t,否則 sshd 會啟動失敗。Debian/Ubuntu 預設沒有啟用 SELinux,可跳過。

# Only on systems with SELinux enforcing (CentOS / Rocky / AlmaLinux)
getenforce
dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 2222
semanage port -l | grep ssh_port_t

步驟 5:檢查配置並重啟 sshd 服務

先用 sshd -t 檢查語法,沒有輸出即表示正確,再重啟服務。注意 Ubuntu 中服務名為 ssh;Ubuntu 22.10 及以上版本預設使用 socket 啟用,修改埠後還需要重新載入並重啟 ssh.socket。最後用 ss 確認新埠已在監聽。

# Check syntax first - no output means OK
sshd -t

# CentOS / Rocky / AlmaLinux / Debian
systemctl restart sshd

# Ubuntu (service is named "ssh"); on Ubuntu 22.10+ with socket activation also run:
systemctl restart ssh
systemctl daemon-reload && systemctl restart ssh.socket

ss -tlnp | grep -E ':22 |:2222 '

步驟 6:測試新埠並關閉 22 埠

在本地新開一個終端視窗,用新埠登入。確認成功後,從 sshd_config 中刪除 Port 22 這一行並重啟 sshd,然後在防火牆中移除 22 埠的放行規則。

# From your own computer, in a NEW window
ssh -p 2222 [email protected]

# After it works: remove "Port 22" from sshd_config, restart sshd, then close 22
firewall-cmd --permanent --remove-service=ssh && firewall-cmd --reload   # firewalld
ufw delete allow 22/tcp                                                  # ufw (if a rule exists)

步驟 7:使用 passwd 修改 Linux root 密碼

執行 passwd 後按提示輸入兩次新密碼,螢幕不會顯示字元。建議使用 12 位以上、包含大小寫字母、數字和符號的隨機密碼,並儲存在密碼管理器中。批次或指令碼場景可使用 chpasswd。

# Change the root password interactively
passwd root

# Or non-interactively (avoid leaving it in shell history on shared systems)
echo 'root:N3w-Str0ng-P@ssw0rd' | chpasswd

常見問題

改完埠後連線超時怎麼辦?

多數是防火牆或 SELinux 沒有放行。通過 VNC 控制臺登入,執行 ss -tlnp | grep sshd 確認 sshd 是否監聽新埠,再檢查 firewall-cmd --list-all 或 ufw status 的輸出。

修改 root 密碼後客戶中心顯示的密碼會變嗎?

不會。系統內修改的密碼不會同步到客戶中心,請自行妥善儲存。如果忘記密碼,可以通過 VNC 控制臺進入單使用者模式重置,或提交工單協助。

只改埠就足夠安全了嗎?

改埠能顯著減少掃描噪音,但更推薦配合 SSH 金鑰登入並停用密碼登入,同時安裝 fail2ban 限制暴力破解。

如按以上步驟操作後仍無法解決,歡迎提交工單聯絡 IMIDC 7×24 技術支援。提交時請註明伺服器 IP、作業系統、已執行的命令和報錯截圖,工程師可以更快定位問題。

這篇文章有幫助嗎?

相關教程