
SSH(Secure Shell)是一種安全的網路協議,廣泛用於遠程登入和管理 Linux 伺服器。隨著 Windows 10 和 Windows 11 內建 OpenSSH 功能的完善,在 Windows 系統上產生 SSH 私鑰並用於 Linux 伺服器的安全連接變得更加便捷和安全。本文將提供一個全面的指南,涵蓋最新的安全實踐和密鑰類型建議。
1. 了解 SSH 密鑰類型與安全性
在開始生成 SSH 密鑰前,了解不同密鑰類型的安全性和適用場景非常重要。目前主流的 SSH 密鑰類型包括 RSA、ECDSA 和 Ed25519。
Ed25519 是目前被廣泛認為最安全且高效的 SSH 密鑰類型。相較於傳統的 RSA 密鑰,Ed25519 具有以下優勢:
- 更高的安全性:使用 256 位元密鑰長度和更優秀的密碼學特性
- 更快的加解密速度:在相同安全級別下,處理速度比 RSA 快
- 更短的密鑰長度:相比 RSA 的 4096 位元,Ed25519 密鑰更為簡短
- 對側信道攻擊的抵抗力更強:設計上能夠抵抗多種常見的側信道攻擊
雖然 RSA 密鑰(特別是 4096 位元長度)在可預見的未來仍被視為安全,但如果連接的伺服器支援 Ed25519,強烈建議使用這種更現代的密鑰類型。
2. 在 Windows 上生成 SSH 密鑰對
Windows 10(1809 版本以後)和 Windows 11 已內建 OpenSSH 客戶端,無需額外安裝即可使用。如果您的系統尚未啟用此功能,可以通過「設定」>「應用程式」>「選用功能」>「新增功能」中找到並安裝「OpenSSH 客戶端」。
使用 Ed25519 密鑰(推薦)
打開 PowerShell 或命令提示字元,執行以下命令以生成 Ed25519 密鑰對:
ssh-keygen -t ed25519 -C "your_email@example.com"
使用 RSA 密鑰(兼容性更好)
如果需要更廣泛的兼容性(例如連接較舊的 Linux 系統),可以使用 RSA 密鑰,但建議使用至少 4096 位元的密鑰長度:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
執行命令後,系統會提示您指定密鑰保存位置。預設位置通常是 C:\Users\YourUsername\.ssh\id_ed25519
(或 id_rsa
)。建議使用預設位置,除非您有特定需求。
接著,系統會詢問是否設置密碼短語(passphrase)。強烈建議設置一個強密碼短語,這為您的私鑰提供了額外的保護層。即使私鑰文件被竊取,沒有密碼短語也無法使用。
完成後,系統會在指定位置生成兩個文件:
- 私鑰文件(無副檔名):
id_ed25519
或id_rsa
- 公鑰文件(.pub 副檔名):
id_ed25519.pub
或id_rsa.pub
3. 將公鑰傳輸到 Linux 伺服器
將公鑰添加到 Linux 伺服器有多種方法,以下介紹兩種常用方式:
方法一:使用 ssh-copy-id(需要密碼登入權限)
如果您已經可以通過密碼登入 Linux 伺服器,可以使用 ssh-copy-id
命令自動將公鑰添加到伺服器。在 Windows 10/11 中,可以通過 PowerShell 使用以下命令:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@linux_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
方法二:手動添加公鑰
如果無法使用 ssh-copy-id
,可以手動將公鑰內容添加到 Linux 伺服器:
在 Windows 上查看公鑰內容:
type $env:USERPROFILE\.ssh\id_ed25519.pub
複製顯示的公鑰內容
登入 Linux 伺服器,確保
.ssh
目錄存在並具有正確的權限:mkdir -p ~/.ssh chmod 700 ~/.ssh
編輯或創建
authorized_keys
文件:nano ~/.ssh/authorized_keys
將複製的公鑰內容粘貼到文件中,每個公鑰佔一行
保存文件並設置正確的權限:
chmod 600 ~/.ssh/authorized_keys
4. 在 Windows 上配置 SSH 客戶端
為了更方便地使用 SSH 密鑰,可以配置 SSH 客戶端以自動使用密鑰並管理密碼短語:
啟動 SSH 代理
在 Windows 10/11 中,可以通過以下步驟啟動 SSH 代理並添加私鑰:
以管理員身份打開 PowerShell,執行以下命令設置 SSH 代理服務為自動啟動:
Set-Service -Name ssh-agent -StartupType Automatic Start-Service ssh-agent
添加私鑰到 SSH 代理:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
這樣,SSH 代理會記住您的密碼短語,無需每次連接時都輸入。
創建 SSH 配置文件
為了更方便地管理多個 SSH 連接,可以創建 SSH 配置文件:
在
.ssh
目錄中創建或編輯config
文件:notepad $env:USERPROFILE\.ssh\config
添加伺服器配置,例如:
Host myserver HostName 192.168.1.100 User username IdentityFile ~/.ssh/id_ed25519 Port 22
保存文件後,可以直接使用別名連接:
ssh myserver
5. 連接到 Linux 伺服器
完成上述配置後,可以使用以下命令連接到 Linux 伺服器:
使用密鑰文件直接連接
ssh -i %USERPROFILE%\.ssh\id_ed25519 username@linux_server_ip
使用 SSH 代理連接(推薦)
如果已將私鑰添加到 SSH 代理,可以直接連接:
ssh username@linux_server_ip
使用配置文件中的別名連接
如果已創建 SSH 配置文件,可以使用別名直接連接:
ssh myserver
6. 增強 Linux 伺服器 SSH 安全性
為了進一步提高 SSH 連接的安全性,可以在 Linux 伺服器上進行以下配置:
禁用密碼驗證
編輯 SSH 伺服器配置文件:
sudo nano /etc/ssh/sshd_config
找到並修改以下設置(如果被註釋,請取消註釋):
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
限制 Root 用戶登入
在同一配置文件中,設置:
PermitRootLogin prohibit-password
這將允許 root 用戶使用密鑰登入,但禁止密碼登入。如果完全禁止 root 登入,可以設置為 no
。
更改 SSH 端口
為了減少自動掃描攻擊,可以考慮更改默認的 SSH 端口(22):
Port 2222 # 選擇一個非標準端口
限制允許的用戶
限制只有特定用戶可以通過 SSH 登入:
AllowUsers username1 username2
啟用雙因素認證
對於需要更高安全性的環境,可以考慮啟用雙因素認證,例如 Google Authenticator。
重啟 SSH 服務
完成配置後,重啟 SSH 服務以應用更改:
sudo systemctl restart sshd
7. 故障排除與常見問題
權限問題
如果遇到「Permission denied」錯誤,請檢查 Linux 伺服器上的文件權限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
密鑰格式問題
某些舊版本的 SSH 可能不支持 Ed25519 密鑰。如果遇到兼容性問題,可以嘗試使用 RSA 密鑰。
連接被拒絕
如果連接被拒絕,可能是因為:
- 公鑰未正確添加到
authorized_keys
- SSH 服務配置不允許密鑰認證
- 防火牆阻止了連接
可以使用 -v
參數獲取詳細的連接信息:
ssh -v username@linux_server_ip
結論
通過使用 SSH 密鑰,特別是更安全的 Ed25519 密鑰,可以顯著提高 Windows 到 Linux 連接的安全性和便利性。Windows 10/11 內建的 OpenSSH 客戶端使這一過程變得更加簡單。結合本文提供的安全配置建議,可以建立一個既安全又高效的遠程管理環境。
參考資料
- Microsoft Learn. (2025). 教學課程: Windows 終端機中的 SSH. https://learn.microsoft.com/zh-tw/windows/terminal/tutorials/ssh
- Microsoft Learn. (2025). 適用於 Windows 的 OpenSSH 伺服器組態. https://learn.microsoft.com/zh-tw/windows-server/administration/openssh/openssh-server-configuration
- Arch Linux Wiki. (2025). SSH 密鑰. https://wiki.archlinuxcn.org/zh-hant/SSH_%E5%AF%86%E9%92%A5
- 飛飛. (2024). Kali Linux SSH 設定與安全性強化指南. https://feifei.tw/kali-linux-ssh-setup-security-guide/
- CSDN. (2023). Ed25519 與 RSA 加密算法比較. https://blog.csdn.net/hadues/article/details/130675430
- 騰訊雲開發者社區. (2023). SSH 密鑰類型. https://cloud.tencent.com/developer/article/2347993