一、什麼是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

關鍵配置項及作用

  1. 修改SSH端口(避免默認22端口)
    默認端口爲22,易被掃描攻擊。建議改爲1024-65535之間的非默認端口(如2222):
   # 打開配置文件
   sudo nano /etc/ssh/sshd_config  
   # 找到並修改:Port 22 → Port 2222(示例端口,可自定義)
  1. 禁止root直接登錄
    直接用root登錄風險高,建議用普通用戶登錄後再提權:
   # 找到並修改:PermitRootLogin yes → PermitRootLogin no
  1. 禁用密碼登錄(推薦用密鑰登錄)
    密碼易被暴力破解,後續章節會介紹密鑰登錄。若暫時禁用密碼,需設爲:
   # 找到並修改:PasswordAuthentication yes → PasswordAuthentication no
  1. 允許指定用戶登錄
    限制只有特定用戶能登錄,避免無關用戶嘗試:
   # 添加: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(公鑰)
  1. 將公鑰複製到服務器
   ssh-copy-id -i ~/.ssh/id_ed25519.pub 用戶名@服務器IP  # 輸入服務器密碼,自動複製公鑰
  1. 禁用密碼登錄(在sshd_config中修改):
   PasswordAuthentication no  # 禁用密碼登錄
   PubkeyAuthentication yes   # 啓用密鑰登錄(默認已開啓)
  1. 重啓服務
   sudo systemctl restart sshd

驗證:下次登錄時,直接執行ssh 用戶名@服務器IP即可免密碼登錄。

七、常見問題排查

  • 連接超時:檢查IP是否正確、端口是否開放、防火牆規則是否生效。
  • 權限錯誤~/.ssh目錄權限需設爲700authorized_keys權限設爲600
  chmod 700 ~/.ssh  # 目錄權限
  chmod 600 ~/.ssh/authorized_keys  # 公鑰文件權限
  • 日誌排查:通過/var/log/auth.log查看SSH連接日誌,定位錯誤原因。

總結

SSH是Linux服務器遠程管理的核心工具,配置時需重點關注端口修改、禁止root直連、禁用密碼登錄(密鑰登錄)和防火牆開放。通過以上步驟,既能安全遠程連接服務器,又能大幅降低被攻擊風險。

小夜