SSH CA Auth

告別密碼!使用 SSH CA 證書實現更安全、更方便的伺服器登入 您是否還在為管理多台伺服器上數不清的 authorized_keys 檔案而煩惱?或是擔心某位同仁的私鑰外洩,卻無法輕易地撤銷其存取權限? 傳統的 SSH 公鑰認證雖然比密碼安全,但在大規模的環境中,金鑰管理本身就是一個挑戰。今天,我們要介紹一個更優雅、更安全的解決方案:SSH 憑證頒發機構 (Certificate Authority, CA)。 透過建立自己的 CA,您可以集中管理所有伺服器的信任關係。伺服器不再需要知道每一個使用者的公鑰,它只需要信任您的 CA。接著,您可以為每一位使用者簽發有時效性的短期證書,大幅提升安全性與管理便利性。 這篇文章將帶您一步步建立自己的 SSH CA,並使用它來簽發使用者證書,實現無痛、安全的伺服器登入。 核心概念與角色分工 在開始之前,讓我們先理解整個流程中的三個主要角色以及它們各自掌管的檔案。 角色 職責 相關檔案 憑證頒發機構 (CA) 簽署使用者公鑰,核發證書。是信任的根源。 ca_key (私鑰), ca_key.pub (公鑰) SSH 伺服器 (Server) 被登入的遠端主機。它不認識使用者,只信任 CA。 ca_key.pub (CA 的公鑰) SSH 客戶端 (Client) 發起連線的使用者。持有自己的私鑰和 CA 核發的證書。 id_ed25519 (私鑰), id_ed25519-cert.pub (證書) 簡單來說,Server 藉由擁有 CA 的公鑰來信任 CA。Client 藉由持有 CA 簽發的證書來向 Server 證明自己的身份。 Step 1: 建立憑證頒發機構 (CA) 位置: 在您的管理工作站或一個安全的機器上 (此處即為 CA)。 首先,我們需要產生一組專門用來當作 CA 的金鑰。這組金鑰是整個信任鏈的核心,請務必妥善保管 CA 的私鑰 (ca_key)。 ...

June 26, 2025

SSHD CA AUTH

產生一組金鑰 ssh-keygen -t rsa -b 4096 -f ca_key -C "My SSH Certificate Authority" 會產生兩個檔案 ca_key ca_key.pub 公鑰分發到要被登錄的機器上 (sshd server) /etc/ssh/sshd_config TrustedUserCAKeys /etc/ssh/ca_key.pub systemctl restart sshd 產生一組金鑰,做為客戶端的金鑰 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "user@example.com" 會產生兩個檔案 id_ed25519 id_ed25519.pub 用 ca 私鑰與 用戶公鑰簽發證書 ssh-keygen -s ca_key -I "user@example.com-cert" -n user1,user2 -V +52w id_ed25519.pub -s ca_key: 指定用於簽署的 CA 私鑰。 -I “user@example.com-cert”: 指定一個證書 ID,用於日誌記錄和審計。 -n user1,user2: 指定此證書允許登錄的用戶名(如果未指定,則默認為金鑰的註釋部分)。這是 SSH 伺服器在驗證證書時會檢查的用戶名。 -V +52w: 設置證書的有效期,例如這裡設置為 52 週。 ...

June 26, 2025