一、什麼是SSH服務?¶
SSH(Secure Shell)是一種安全的網絡協議,用於通過加密方式遠程管理Linux服務器。相比早期不安全的Telnet(明文傳輸),SSH能對登錄信息、命令和數據進行加密,防止被黑客竊聽或篡改。
二、安裝SSH服務¶
首先需要在服務器上安裝SSH服務端程序。不同Linux發行版安裝命令不同:
- Ubuntu/Debian:
sudo apt update # 更新軟件源
sudo apt install openssh-server # 安裝SSH服務端
- CentOS/RHEL:
sudo yum install openssh-server # 安裝SSH服務端(yum系統)
# 或 CentOS 8+ 使用 dnf:
sudo dnf install openssh-server
安裝完成後,啓動SSH服務並設置開機自啓:
sudo systemctl start sshd # 啓動服務(Ubuntu/Debian用ssh)
sudo systemctl enable sshd # 設置開機自啓
檢查服務狀態:
sudo systemctl status sshd # 若顯示“active (running)”則已啓動
三、使用SSH遠程連接服務器¶
安裝後,本地機器(Windows/macOS/Linux)可通過SSH客戶端連接服務器。
- Windows用戶:
- 安裝PuTTY(免費SSH客戶端)或使用Windows 10+自帶的OpenSSH客戶端(在“應用和功能”→“可選功能”中添加)。
- 打開命令提示符或PowerShell,輸入:
ssh 用戶名@服務器IP # 例如:ssh testuser@192.168.1.100
-
首次連接時會提示“是否繼續連接”,輸入
yes並回車。 -
Linux/macOS用戶:
直接在終端輸入:
ssh 用戶名@服務器IP # 例如:ssh alice@192.168.1.100
輸入密碼後即可登錄。
四、配置SSH服務(安全設置)¶
SSH的核心配置文件是/etc/ssh/sshd_config(Ubuntu/Debian爲/etc/ssh/sshd_config,CentOS爲/etc/ssh/sshd_config)。修改前建議備份原文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
關鍵配置項及作用:
- 修改SSH端口(避免默認22端口)
默認端口爲22,易被掃描攻擊。建議改爲1024-65535之間的非默認端口(如2222):
# 打開配置文件
sudo nano /etc/ssh/sshd_config
# 找到並修改:Port 22 → Port 2222(示例端口,可自定義)
- 禁止root直接登錄
直接用root登錄風險高,建議用普通用戶登錄後再提權:
# 找到並修改:PermitRootLogin yes → PermitRootLogin no
- 禁用密碼登錄(推薦用密鑰登錄)
密碼易被暴力破解,後續章節會介紹密鑰登錄。若暫時禁用密碼,需設爲:
# 找到並修改:PasswordAuthentication yes → PasswordAuthentication no
- 允許指定用戶登錄
限制只有特定用戶能登錄,避免無關用戶嘗試:
# 添加:AllowUsers 用戶名1 用戶名2(多個用戶用空格分隔)
AllowUsers alice bob # 僅允許alice和bob登錄
修改完成後,重啓SSH服務使配置生效:
sudo systemctl restart sshd # 重啓服務
五、防火牆開放SSH端口¶
服務器防火牆默認可能阻止SSH連接,需開放自定義端口(如2222):
- Ubuntu/Debian(ufw防火牆):
sudo ufw allow 2222/tcp # 開放2222端口(TCP協議)
sudo ufw reload # 重載防火牆
- CentOS/RHEL(firewalld防火牆):
sudo firewall-cmd --add-port=2222/tcp --permanent # 永久開放端口
sudo firewall-cmd --reload # 重載防火牆規則
六、SSH密鑰登錄(更安全的方式)¶
密鑰登錄無需輸入密碼,通過本地生成的密鑰對驗證身份,適合長期使用。
步驟:
1. 本地生成密鑰對(在本地機器執行,非服務器):
ssh-keygen -t ed25519 # 生成密鑰對(推薦ed25519算法,速度快)
# 一路回車即可,默認保存在~/.ssh/id_ed25519(私鑰)和id_ed25519.pub(公鑰)
- 將公鑰複製到服務器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub 用戶名@服務器IP # 輸入服務器密碼,自動複製公鑰
- 禁用密碼登錄(在
sshd_config中修改):
PasswordAuthentication no # 禁用密碼登錄
PubkeyAuthentication yes # 啓用密鑰登錄(默認已開啓)
- 重啓服務:
sudo systemctl restart sshd
驗證:下次登錄時,直接執行ssh 用戶名@服務器IP即可免密碼登錄。
七、常見問題排查¶
- 連接超時:檢查IP是否正確、端口是否開放、防火牆規則是否生效。
- 權限錯誤:
~/.ssh目錄權限需設爲700,authorized_keys權限設爲600:
chmod 700 ~/.ssh # 目錄權限
chmod 600 ~/.ssh/authorized_keys # 公鑰文件權限
- 日誌排查:通過
/var/log/auth.log查看SSH連接日誌,定位錯誤原因。
總結¶
SSH是Linux服務器遠程管理的核心工具,配置時需重點關注端口修改、禁止root直連、禁用密碼登錄(密鑰登錄)和防火牆開放。通過以上步驟,既能安全遠程連接服務器,又能大幅降低被攻擊風險。