SVN+SSH 在 Ubuntu 上:鎖定安全性 - 密碼
再會,
我已經設置了一個執行 Ubuntu 12.04 LTS 的伺服器。我暫時保留了預設的 SSH 埠,並設置了一個 DynDNS.org 帳戶。
從一台執行 linux 的機器上,在一個單獨的網路上,我可以通過 SVN+SSH 查詢我的伺服器:
svn --username myName ls svn+ssh://myName@superdude.dyndns.org/usr/local/svn/repos/private
到目前為止一切順利:我被詢問使用者的密碼,並且似乎生成了一個 SSH 私鑰/公鑰對。不過,我很擔心。
我認為私鑰/公鑰的重點是我必須提前為客戶提供適當的密鑰。我想鎖定此伺服器,以便連接到我的 SVN 伺服器的人同時擁有我提前給他們的密鑰文件和使用者“myName”的密碼。有什麼我想念的嗎?在這一點上,似乎有人需要的是我的 SVN 伺服器的 URL,以及使用者“myName”的密碼,他們就在裡面。
我怎樣才能把它鎖得更緊?
謝謝!
在 SSH 中,公鑰認證和密碼認證(或鍵盤互動認證)是分開的。您可以使用 PAM、密碼或公鑰(或任何其他可用的工具,如 kerberos GSSAPI)。使用哪一個是客戶端和伺服器之間基於能力協商的。
因此,您不能同時要求公鑰和密碼;你必須使用任何一個。當然,密鑰本質上也綁定到特定使用者。從理論上講,您可以使用 PAM 完成此操作,但由於沒有 SSH 客戶端支持它。
如果我記得您可以加密密鑰,以便使用者需要密碼來解密它們,但使用者可以使用 openssl 解密密鑰並將其儲存解密以避免輸入密碼(如果您擔心它們被盜) ,如果你真的擔心它們被破解,無論你是否向使用者提供加密的私鑰,攻擊者都可以這樣做(但就目前而言,這很難做到)。
另一個方面是伺服器的指紋,您最好通過將其提供給客戶端或在 DNS 中使用 SSHFP RRtype 來提前發布。這允許客戶端驗證它是否連接到正確的伺服器,並且無論使用何種身份驗證機制都會得到驗證。這始終很重要,儘管對於密碼和鍵盤互動式身份驗證更重要(以防止憑據被盜)。