萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux/UNIX/Windows 跨平台 SSH 遠端管理部署全指南

Telnet 以明文傳輸帳號密碼,已不符合現代安全基線。SSH (Secure Shell) 透過非對稱加密保護認證與會話資料,成為遠端管理標準協議。本文系統整理 SSH1/SSH2 版本差異、商業版與 OpenSSH 免費版選擇、Linux/UNIX/Windows 跨平台伺服端與客戶端部署、金鑰認證配置、SCP/SFTP 檔案傳輸、相容性避坑指南。

SSH 版本與軟體包選型

建議: 全環境統一使用 OpenSSH,避免商業版與開源版客戶端/伺服端混用導致的相容性問題 (如金鑰格式、協議協商差異)。

Linux/UNIX 部署 OpenSSH (源碼編譯)

依賴庫

# zlib (壓縮)
wget https://zlib.net/zlib-1.2.13.tar.gz && tar xzf zlib-1.2.13.tar.gz && cd zlib-1.2.13 && ./configure && make && make install
# OpenSSL (加密)
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xzf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w && ./config && make && make install

OpenSSH 編譯安裝

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz
tar xzf openssh-9.5p1.tar.gz && cd openssh-9.5p1
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local --sysconfdir=/etc/ssh
make && make install
# 建立系統用戶/群組 (若無)
useradd -r -s /sbin/nologin -d /var/empty sshd
# 配置 systemd 服務 (現代系統)
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd && chkconfig sshd on

Windows 部署 (OpenSSH for Windows / 官方功能)

  • Windows 10 1809+ / Server 2019+: 設定 → 應用程式 → 選用功能 → 新增功能 → OpenSSH Server/Client
  • 舊版本: 下載 OpenSSH-Win64.zip 解壓至 C:\Program Files\OpenSSH,以管理員 PowerShell 執行 install-sshd.ps1
  • 服務管理:Start-Service sshd、Set-Service sshd -StartupType Automatic
  • 防火牆規則:New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

金鑰認證配置:免密碼登入與自動化基石

客戶端產生金鑰對

ssh-keygen -t ed25519 -C "user@host"  # 推薦 Ed25519 (高安全、高效能、短金鑰)
# 或 RSA 4096: ssh-keygen -t rsa -b 4096
# 預設儲存 ~/.ssh/id_ed25519 (私鑰) 與 .pub (公鑰)

部署公鑰至伺服端

# 方法 1: ssh-copy-id (最簡單)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

# 方法 2: 手動
cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

伺服端強化配置 (/etc/ssh/sshd_config)

Port 22
Protocol 2
PermitRootLogin no                  # 禁止 root 直接登入
PubkeyAuthentication yes
PasswordAuthentication no           # 僅允許金鑰認證
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
AllowUsers adminuser @wheelgroup    # 白名單用戶/群組
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
LoginGraceTime 30
Banner /etc/ssh/banner.txt          # 法律警告横幅

修改後:systemctl reload sshd 或 service sshd reload

進階應用:SCP/SFTP/通道轉發

  • SCP 複製: scp -P 22 file.txt user@server:/path/ (大檔案建議 rsync -avz -e ssh)
  • SFTP 互動: sftp user@server,支援 get/put/ls/chmod 等指令
  • 本地埠轉發: ssh -L 8080:internal-db:3306 user@bastion 將本地 8080 轉發至內網資料庫
  • 遠端埠轉發: ssh -R 8080:localhost:80 user@public-server 將公網伺服器 8080 反向轉發至本地 Web
  • 動態 SOCKS 代理: ssh -D 1080 user@server,瀏覽器設定 SOCKS5 127.0.0.1:1080 實現加密代理

Windows 圖形客戶端推薦

  • MobaXterm (免費版): 整合 SSH、SFTP、X11、串口、RDP、VNC、Mosh,單一介面管理所有連線
  • Windows Terminal + OpenSSH Client: 原生、輕量、支援多分頁、配置檔 ~/.ssh/config
  • PuTTY / KiTTY: 經典輕量,需 ppk 格式私鑰 (puttygen 轉換)
  • SecureCRT (商業): 企業級會話管理、腳本自動化、強健終端模擬

相容性避坑清單

  1. 金鑰格式:OpenSSH (PEM/RFC4716) vs PuTTY (PPK) — 使用 puttygen 或 ssh-keygen -i/-e 轉換
  2. SSH1 相容:OpenSSH 預設停用 SSH1,如需支援舊設備啟用 Protocol 2,1 (不建議)
  3. 演算法協商:舊客戶端可能不支援 Ed25519/ChaCha20,伺服端可配置 KexAlgorithms、Ciphers、MACs 兼容
  4. Known hosts 檔案:首次連線驗證主機金鑰指紋,防止中間人攻擊

總結

OpenSSH 作為跨平台 SSH 實作的事實標準,提供了企業級安全特性、豐富的通道轉發功能、完善的金鑰管理生態。統一標準化部署、強制金鑰認證、禁用弱加密演算法、定期輪換金鑰、審計登入日誌,是構建安全遠端管理基礎設施的必要實踐。

copyright © 萬盛學電腦網 all rights reserved
版本授權特點推薦場景
SSH1 (1.2.27+)免費早期版本,存在 CRC32 弱點,已停止維護僅相容舊系統
SSH2 (2.x)商業 (ssh.com)修正 SSH1 弱點、功能更強、向下相容 SSH1 客戶端企業付費支援環境
OpenSSHBSD/GPL 免費同時支援 SSH1/SSH2、開源社群維護、標準配置首選方案