開始輸入,可搜尋發票、服務、域名、工單,以及 更多...
預設的 22 埠每天都會遭到大量自動化暴力破解掃描,把 SSH 改到非標準埠並設定高強度 root 密碼,是伺服器上線後最基礎的加固措施。本文介紹 Linux 修改 SSH 埠與 root 密碼的完整步驟,包括編輯 sshd_config、在防火牆和 SELinux 中放行新埠、安全重啟 sshd 以及用 passwd 修改密碼。適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux。
先備份 /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
用 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
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
在 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
先用 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 '
在本地新開一個終端視窗,用新埠登入。確認成功後,從 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)
執行 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 的輸出。
不會。系統內修改的密碼不會同步到客戶中心,請自行妥善儲存。如果忘記密碼,可以通過 VNC 控制臺進入單使用者模式重置,或提交工單協助。
改埠能顯著減少掃描噪音,但更推薦配合 SSH 金鑰登入並停用密碼登入,同時安裝 fail2ban 限制暴力破解。
如按以上步驟操作後仍無法解決,歡迎提交工單聯絡 IMIDC 7×24 技術支援。提交時請註明伺服器 IP、作業系統、已執行的命令和報錯截圖,工程師可以更快定位問題。