在遠端伺服器上產生 SSH 和 GnuPG 金鑰。關鍵管理最佳實踐

在遠端伺服器上產生 SSH 和 GnuPG 金鑰。關鍵管理最佳實踐

我詢問與密鑰產生、使用和管理相關的最佳實踐。

有幾次,由於各種原因,我在透過 SSH 登入工作中的遠端多用戶伺服器(以及在家中的工作桌上型電腦)時創建了 SSH 和 GnuPG 金鑰。

當我為新產生的金鑰輸入密碼時,我突然意識到我無法控制我登入的機器或之間的連結。我有點信任工作中的系統管理員,而且 SSH 是安全的,但儘管如此…透過這樣的連結發送我的新密碼感覺很奇怪。

你怎麼認為?在本地生成密鑰(SSH、GnuPG 或其他)然後透過 SSH 傳輸私鑰是否更明智,或者我只是對整個事情感到偏執?

另外,如果我至少有點偏執是正確的,那麼您對在哪裡儲存私鑰有什麼想法?它們都應該在一個物理位置嗎?我應該大量使用gpg-agentandssh-agent嗎?

我在兩台獨立的機器上工作,使用 SSH 登入一些獨立的多用戶伺服器來工作。我從大約四個位置(本地和遠端)使用 GnuPG 對 Git 提交進行簽署。

我正在混合 Mac OS X(帶有 MacPorts)和 Linux 機器(帶有 Pkgsrc),但總是在命令列上。

答案1

你怎麼認為?在本地生成密鑰(SSH、GnuPG 或其他)然後透過 SSH 傳輸私鑰是否更明智,或者我只是對整個事情感到偏執?

這實際上並沒有什麼區別,至少如果系統管理員沒有篡改軟體堆疊的話(但為什麼他們要這麼做,無論如何都要掌握私鑰?)。

只要私鑰在遠端機器上,就有沒有不同它是如何到達那裡的。系統管理員可以存取它。密碼短語也只會增加獲取金鑰的額外工作量,因為他們也可以存取您的輸入。

另外,如果我至少有點偏執是正確的,那麼您對在哪裡儲存私鑰有什麼想法?它們都應該在一個物理位置嗎?我應該經常大量使用 gpg-agent 和 ssh-agent 嗎?

這取決於您的要求、偏執程度、對系統管理員的信任以及金鑰的最終使用。

如果您需要私人SSH機器上用於存取某些服務(比方說,GitHub)的金鑰,只需產生一個僅在該機器上使用的新金鑰,並且僅接受在所需的服務/機器上進行身份驗證。

關於開放PGP/GnuPG,事情取決於你的要求。看來您想要簽署軟體,我感覺您的公司會發生這種情況。如果密鑰直接連結到公司並且僅為此目的而創建,我認為沒有任何人反對在他們的計算機上不擁有它。

如果您出於任何原因需要使用自己的金鑰,請建立子金鑰,您至少可以將其限制為可以隨時簽署和撤銷,而無需麻煩。無論如何,使用子項是一個很好的做法!許多 OpenPGP 高級用戶實際上離線儲存他們的私有主金鑰,並且實際上僅將其用於金鑰管理。

Forwardinggpg-agent的socket似乎是很有可能的,當然會減少系統管理員對密鑰的存取(他們不再能夠存取完整的密鑰,而只能使用它,至少從GnuPG 2.1開始,刪除了全部代理的私鑰操作)。

相關內容