SSH Key Login 設定教學

SSH Key Login 設定教學|Linux 遠端安全登入指南

SSH Key Login 可以取代傳統密碼登入方式,使用公鑰與私鑰驗證,大幅提升 Linux 與 Windows 伺服器遠端登入安全。本文詳細說明如何在 Windows 產生 SSH Key(PowerShell 與 PuTTYgen)、將公鑰部署到伺服器(含 ssh-copy-id 拆解說明與手動部署流程)、設定 SSH 服務及測試登入,並提供實務範例,幫助新手完整理解私鑰、公鑰存放與操作原則,以及如何使用同一組公鑰登入多台伺服器。

SSH Key 產生與部署步驟

示範管理員大雄如何從 Windows 筆電登入 Linux 伺服器(IP 192.168.10.20)的完整流程,並詳細說明 ssh-copy-id 指令拆解與手動部署流程。

步驟 1:在 Windows 筆電產生 SSH Key

方法一:使用 PowerShell 產生公私鑰

ssh-keygen -t rsa -b 4096 -C "admin@example.com"
# 說明:
# 1. 生成公私鑰對
# 2. 私鑰存放 %USERPROFILE%\.ssh\id_rsa
# 3. 公鑰存放 %USERPROFILE%\.ssh\id_rsa.pub
# 4. 可設定密碼保護私鑰

方法二:使用 PuTTYgen(圖形介面操作)


# 1. 打開 PuTTYgen
# 2. 選擇 RSA, 4096 bits
# 3. 點 Generate 產生金鑰
# 4. 設定 Key passphrase 保護私鑰
# 5. 將 Private key 儲存到本地(例如 id_rsa.ppk)
# 6. 將 Public key 複製或匯出 OpenSSH 格式,部署到伺服器

私鑰永遠保留在本地端,不會傳到伺服器;公鑰部署到伺服器,由伺服器驗證登入。

步驟 2:將公鑰部署到伺服器(ssh-copy-id 詳細拆解)

ssh-copy-id admin@192.168.10.20
# 拆解說明:
# ssh-copy-id:將本地 SSH 公鑰自動複製到遠端伺服器 ~/.ssh/authorized_keys
# user:遠端伺服器使用者帳號,例如 admin
# 192.168.10.20:伺服器 IP 或主機名稱
# 執行流程:
# 1. 第一次會提示輸入遠端使用者密碼做驗證
# 2. 自動將本地公鑰加入伺服器 ~/.ssh/authorized_keys
# 3. 設定完成後可直接使用私鑰登入,不需每次輸入密碼
# 注意:私鑰永遠不會傳到伺服器

手動部署公鑰(若 ssh-copy-id 不可用)

# 查看本地公鑰內容
cat ~/.ssh/id_rsa.pub

# 登入伺服器
ssh admin@192.168.10.20

# 建立或打開 authorized_keys
nano ~/.ssh/authorized_keys

# 將公鑰貼入後儲存
# 確保 ~/.ssh 權限為 700,authorized_keys 權限為 600

步驟 3:設定 SSH 伺服器允許 Key 登入

sudo nano /etc/ssh/sshd_config
# 設定:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

sudo systemctl restart sshd

步驟 4:測試 SSH Key 登入

ssh admin@192.168.10.20
# 登入成功且不需密碼,即完成 SSH Key 設定
# 可重複使用同一私鑰登入多台伺服器,只要每台伺服器都加入相同公鑰

進階安全建議

  • 設定私鑰密碼,降低 Key 外洩風險
  • 限制特定 IP 可登入 SSH
  • 定期更換 Key 並更新 authorized_keys
  • 禁用 root 直接登入,使用普通帳號搭配 sudo
  • 對不同伺服器可使用不同公鑰,區分權限管理

FAQ 常見問題

如何在 Windows 上產生 SSH Key?

在 Windows 可以使用 PowerShell 或 PuTTYgen 產生公私鑰。PowerShell 使用 ssh-keygen -t rsa -b 4096 -C “email@example.com”,私鑰存放 %USERPROFILE%\.ssh\id_rsa,公鑰 %USERPROFILE%\.ssh\id_rsa.pub。PuTTYgen 則可透過 GUI 產生公私鑰並匯出 OpenSSH 格式,方便部署到伺服器。

如何使用 ssh-copy-id 部署公鑰?

ssh-copy-id admin@192.168.10.20 可自動將公鑰加入伺服器 ~/.ssh/authorized_keys,第一次執行需輸入遠端密碼驗證,並自動設定權限。部署完成後可直接使用私鑰登入,不需每次輸入密碼。

如果沒有 ssh-copy-id 怎麼辦?

可手動複製公鑰:先使用 cat ~/.ssh/id_rsa.pub 查看公鑰內容,登入伺服器 ssh admin@192.168.10.20,打開或建立 ~/.ssh/authorized_keys,貼上公鑰並儲存。確保資料夾權限 700,authorized_keys 權限 600。

同一個公鑰如何登入多台伺服器?

將相同公鑰加入每台伺服器的 ~/.ssh/authorized_keys,即可使用同一私鑰登入多台伺服器,方便集中管理與權限分級。對重要伺服器可使用不同公鑰區分權限。

私鑰與公鑰的存放原則是什麼?

私鑰永遠保存在本地端,不會傳到伺服器;公鑰部署到伺服器,由伺服器驗證私鑰登入,以確保安全性。

SSH Key 登入失敗怎麼辦?

檢查伺服器 ~/.ssh/authorized_keys 是否正確,權限是否為 600,資料夾為 700,並確認 sshd_config 設定已重啟。必要時可重新部署公鑰。

    PAGE TOP