一、什麼是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. 常用配置項(新手必看)

nanovim打開配置文件(推薦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`)是給服務器的。
  1. 將公鑰傳到服務器
     ssh-copy-id -i ~/.ssh/id_ed25519.pub user1@192.168.1.100 -p 2222
 輸入服務器密碼後,公鑰會自動寫入`~/.ssh/authorized_keys`,下次登錄無需密碼。

六、安全注意事項(新手必看!)

1. 防火牆放行SSH端口

如果服務器開啓了防火牆(如ufwiptables),需允許SSH端口:
- UFW防火牆(Ubuntu常用):

  sudo ufw allow 2222/tcp  # 允許2222端口(對應剛纔改的端口)
  sudo ufw reload          # 重載防火牆
  • 雲服務器:在阿里雲/騰訊雲控制檯,需在“安全組”中開放SSH端口(如2222)。

2. 禁用root直接登錄

修改PermitRootLoginno(見上文配置項),改用普通用戶登錄,再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 ~/.sshchmod 600 ~/.ssh/authorized_keys

八、總結

SSH是Linux遠程管理的“基石”,配置核心是:安裝服務→修改安全配置→客戶端連接。新手重點記住:改端口、禁用root、用密鑰登錄、防火牆放行。多練幾次,就能熟練遠程管理服務器啦!

如果遇到問題,記得先檢查服務是否啓動(systemctl status sshd),再看防火牆和配置文件,最後參考本文排查步驟,基本能解決大部分問題。

小夜