一、什麼是SSH?¶
SSH(Secure Shell)是一種安全的遠程登錄協議,它能讓你通過網絡安全地連接到Linux服務器,就像用一把鑰匙打開遠程電腦的“大門”。和早期不安全的Telnet、FTP不同,SSH會對傳輸的數據進行加密,防止密碼或命令被中間人竊取,尤其適合管理多臺服務器的場景。
二、爲什麼需要配置SSH?¶
當你需要遠程管理服務器(比如阿里雲、騰訊雲的雲服務器,或者自己搭建的本地服務器)時,SSH是最常用的工具。比如:
- 你在公司加班,想遠程操作家裏的Linux服務器;
- 你需要批量管理多臺服務器,不用一臺臺跑現場;
- 你想在本地編輯服務器上的代碼,直接通過SSH同步文件。
三、服務器端:安裝與啓動SSH服務¶
1. 檢查是否已安裝SSH服務¶
Linux系統默認可能沒安裝SSH服務,先確認是否安裝了sshd(SSH服務端程序)。
在終端執行:
# 檢查sshd服務是否存在
dpkg -l | grep openssh-server # Debian/Ubuntu系統
# 或
rpm -qa | grep openssh-server # CentOS/RHEL系統
如果輸出包含openssh-server,說明已安裝;否則需要安裝。
2. 安裝SSH服務(以常見系統爲例)¶
- Debian/Ubuntu(用
apt包管理器):
sudo apt update # 更新軟件源
sudo apt install openssh-server # 安裝SSH服務端
- CentOS/RHEL(用
yum包管理器):
sudo yum install openssh-server # 安裝SSH服務端
- 啓動並設置開機自啓:
安裝後,SSH服務默認叫sshd,啓動並設置開機自啓:
sudo systemctl start sshd # 啓動服務
sudo systemctl enable sshd # 設置開機自啓
四、配置SSH服務(關鍵步驟)¶
SSH的核心配置文件是/etc/ssh/sshd_config,修改它可以調整端口、權限等。
1. 備份配置文件(重要!)¶
修改前先備份,防止出錯無法恢復:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 常用配置項(新手必看)¶
用nano或vim打開配置文件(推薦nano更簡單):
sudo nano /etc/ssh/sshd_config
重點關注以下配置(默認值可忽略,需要改的重點標紅):
| 配置項 | 默認值 | 建議修改值(示例) | 說明 |
|---|---|---|---|
Port |
22 | Port 2222 | SSH端口(避免22被暴力破解,改大一點) |
PermitRootLogin |
yes | PermitRootLogin no | 禁止root直接登錄(更安全) |
AllowUsers |
空 | AllowUsers user1 | 僅允許user1用戶登錄 |
PasswordAuthentication |
yes | PasswordAuthentication no | 禁用密碼登錄(用密鑰更安全,後文講) |
3. 重啓SSH服務生效¶
修改完配置文件後,必須重啓sshd服務才能生效:
sudo systemctl restart sshd
五、客戶端連接:在本地用SSH登錄服務器¶
1. 客戶端工具選擇¶
- Windows:推薦PuTTY(免費)、Xshell(付費)、或Windows 10/11自帶的PowerShell(需安裝OpenSSH客戶端)。
- macOS/Linux:直接用終端(Terminal)輸入命令。
- 手機:Termius(支持多平臺,圖形化操作)。
2. 命令行連接(Linux/macOS)¶
在本地終端執行:
ssh 用戶名@服務器IP -p 端口號
示例:
- 用用戶user1連接IP爲192.168.1.100的服務器,端口2222:
ssh user1@192.168.1.100 -p 2222
- 第一次連接會提示“是否繼續連接”,輸入
yes並回車。
3. 密碼登錄 vs 密鑰登錄(安全進階)¶
- 密碼登錄:直接輸入密碼,簡單但不安全(易被暴力破解)。
- 密鑰登錄:更安全!步驟如下:
1. 本地生成密鑰對(在本地終端執行):
ssh-keygen -t ed25519 # 生成密鑰對(一路回車默認即可)
生成的私鑰(`~/.ssh/id_ed25519`)在本地,公鑰(`~/.ssh/id_ed25519.pub`)是給服務器的。
- 將公鑰傳到服務器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user1@192.168.1.100 -p 2222
輸入服務器密碼後,公鑰會自動寫入`~/.ssh/authorized_keys`,下次登錄無需密碼。
六、安全注意事項(新手必看!)¶
1. 防火牆放行SSH端口¶
如果服務器開啓了防火牆(如ufw、iptables),需允許SSH端口:
- UFW防火牆(Ubuntu常用):
sudo ufw allow 2222/tcp # 允許2222端口(對應剛纔改的端口)
sudo ufw reload # 重載防火牆
- 雲服務器:在阿里雲/騰訊雲控制檯,需在“安全組”中開放SSH端口(如2222)。
2. 禁用root直接登錄¶
修改PermitRootLogin爲no(見上文配置項),改用普通用戶登錄,再su -切換到root(更安全)。
3. 定期更新系統和SSH¶
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # CentOS/RHEL
七、常見問題排查¶
| 問題 | 可能原因 | 解決方法 |
|---|---|---|
| 連接超時 | 服務器IP錯誤/網絡不通 | 檢查IP和網絡,ping服務器IP |
| 拒絕連接 | 端口未開放/服務未啓動 | 檢查端口(telnet 192.168.1.100 2222),重啓sshd |
| 權限錯誤 | ~/.ssh目錄權限不對 | 執行 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys |
八、總結¶
SSH是Linux遠程管理的“基石”,配置核心是:安裝服務→修改安全配置→客戶端連接。新手重點記住:改端口、禁用root、用密鑰登錄、防火牆放行。多練幾次,就能熟練遠程管理服務器啦!
如果遇到問題,記得先檢查服務是否啓動(systemctl status sshd),再看防火牆和配置文件,最後參考本文排查步驟,基本能解決大部分問題。