Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
您可以透過macOS、Linux或 Windows 上的SSH連線到 Git 存放庫,以安全地與 Azure DevOps 連線。
SSH 公鑰驗證可與產生的加密金鑰非對稱組搭配使用。 公鑰會與 Azure DevOps 共用,並用來驗證初始 SSH 連線。 私鑰會在您的系統上保持安全且安全。
下列步驟涵蓋使用命令列在下列平台上設定 SSH 金鑰驗證 (也稱為 ):
- Linux
- macOS
- 執行 Git for Windows 的 Windows 系統
若要使用金鑰型驗證,您必須先為您的用戶端產生公開/私密金鑰組。 ssh-keygen.exe可用來產生密鑰檔案,而且可以指定 DSA、RSA、ECDSA 或 Ed25519 演算法。 如果未指定演算法,則會使用 Ed25519。
若要使用 Azure DevOps 支援的 RSA 演演算法產生密鑰檔案(RSA-SHA2-256 或 RSA-SHA2-512),請從 PowerShell 或用戶端上執行 下列其中一個命令:
Or
命令輸出應該會顯示下列輸出(其中 是您的使用者名稱):
您可以按 Enter 鍵接受預設值,或指定您想要產生金鑰所在的路徑及或檔案名稱。 此時,系統會提示您使用複雜密碼來加密私鑰檔案。 複雜密碼可以是空的,但不建議使用。 複雜密碼可與金鑰檔案搭配使用,以提供雙因素驗證。
現在,您在指定的位置中有一個公用/私人 RSA 金鑰組。 .pub 檔案是公開金鑰,沒有副檔名的檔案是私密金鑰:
將上一個步驟中產生的公鑰與您的使用者識別碼產生關聯。
流覽至入口網站並選取使用者介面右上角虛擬人偶旁的圖示,以開啟您的安全性設定。 選取 出現的功能表中的 [SSH 公鑰 ]。
選取 [+ 新增金鑰]。
將您產生的公鑰內容複製到 [公鑰資料] 欄位中。
為金鑰提供有用的描述(此描述會顯示在設定檔的 SSH 公鑰 頁面上),以便稍後記住它。 選取 [ 儲存 ] 以儲存公鑰。 儲存之後,就無法變更密鑰。 您可以刪除金鑰,或為另一個金鑰建立新的專案。 您可以新增至使用者設定檔的金鑰數目沒有任何限制。 另請注意,儲存在 Azure DevOps 中的 SSH 金鑰會在一年後到期。 如果您的金鑰過期,您可以上傳新的金鑰或相同的密鑰,以透過 SSH 繼續存取 Azure DevOps。
在 [ SSH 公鑰 概觀] 頁面上,會顯示伺服器指紋。 請記下第一次透過 SSH 連線到 Azure DevOps 時要使用的 SHA256 指紋。
執行下列命令來測試連線:
如果您是第一次連線,您應該會收到下列輸出:
比較指紋與先前提及 SSH 公鑰 頁面上顯示的 SHA256 指紋。 只有在符合時才繼續!
輸入 以繼續。 如果一切都已正確設定,輸出看起來應該像這樣:
如果沒有,請參閱問題與疑難解答一節。
從入口網站複製 SSH 複製 URL。 在此範例中,SSH 複製 URL 適用於名為 fabrikam-fiber 之組織中的存放庫,如 之後 URL 的第一個部分所指示。
從命令提示字元執行 。
如果您未使用 SSH 代理程式,系統會提示您輸入複雜密碼:
如果您改為提示您驗證指紋,請閱讀 步驟 2:再次將公鑰新增至 Azure DevOps 。 如需其他問題,請閱讀問題與疑難解答一節。
答: 可以看到兩個不同的警告訊息:
Or
如果您已修改 SSH 組態,將下列內容新增至您的 ( 在 Windows 上) 檔案,以降級 Azure DevOps 的安全性設定:
立即移除這些行,並確定 允許和/或 。
如需詳細資訊,請參閱部落格文章。
答: 您可能會遇到多個不同的問題:
使用不支援的 ssh-rsa
如果您已修改 SSH 組態,將下列內容新增至您的 ( 在 Windows 上) 檔案,以降級 Azure DevOps 的安全性設定:
立即移除這些行,並確定 允許和/或 。
如需詳細資訊,請參閱部落格文章。
沒有相符的主機金鑰
此問題不應該發生在 Azure DevOps Service 或較新的 Azure DevOps Server 版本上,如部落格文章中所述。
修改 SSH 組態,將下列內容新增至您的 ( 在 Windows 上) 檔案,以降級 Azure DevOps 的安全性設定:
沒有相符的 MAC
修改 SSH 組態,將下列內容新增至您的 ( 在 Windows 上) 檔案,以降級 Azure DevOps 的安全性設定:
沒有相符的金鑰交換方法
修改 SSH 組態,將下列內容新增至您的 ( 在 Windows 上) 檔案,以降級 Azure DevOps 的安全性設定:
答: 您可以使用 SSH 代理程式。 Linux、macOS 和 Windows(從 Windows 10 開始(組建 1809) 或使用 Git for Windows 搭配 Git Bash)全部隨附於 SSH 代理程式。 SSH 代理程式可用來快取 SSH 金鑰以供重複使用。 如需如何使用 SSH 廠商的詳細資訊,請參閱 SSH 廠商的手冊。
A: 可以。 使用 PuTTYgen 載入私鑰,移至 [轉換] 功能表,然後選取 [匯出 OpenSSH 金鑰]。 儲存私鑰檔案,然後遵循步驟來 設定非預設密鑰。 直接從 PuTTYgen 視窗複製您的公鑰,並貼到 安全性設定中的 [金鑰數據 ] 欄位。
答: 您可以使用命令行,透過下列 命令針對您的公鑰執行,來驗證上傳的公鑰指紋,並顯示於配置檔中。 如果您未使用預設值,則必須變更路徑和公鑰檔名。
然後,您可以將簽章與配置檔中的簽章進行比較。 如果您在將密鑰新增至 Azure DevOps 時,有連線問題,或擔心在公鑰中不正確地貼到 [金鑰數據 ] 字段中,這項檢查會很有用。
答: 您必須更新 Git 中的遠端,以從 HTTPS 變更為 SSH URL。 擁有 SSH 複製 URL 之後,請執行下列命令:
存取遠端的 Git 命令會使用 SSH。
答: Azure DevOps Services 目前不支援透過 SSH 的 LFS。 使用 HTTPS 連線至具有 Git LFS 追蹤檔案的存放庫。
答: 若要使用儲存在與預設值不同的位置的密鑰,請執行下列兩項工作:
索引鍵必須位於只有您可以讀取或編輯的資料夾中。 如果資料夾具有較寬的許可權,SSH 不會使用金鑰。
例如,您必須將 SSH 指定為 SSH 組態中的「身分識別」,讓 SSH 知道金鑰的位置:
此 設定可確保 SSH 不會使用任何其他可用的身分識別進行驗證。 如果有多個身分識別可供使用,此設定就特別重要。
答: 一般而言,當您為 SSH 用戶端設定多個金鑰時,用戶端會嘗試循序向每個金鑰進行驗證,直到 SSH 伺服器接受一個金鑰為止。
不過,此方法不適用於 Azure DevOps,因為與 SSH 通訊協定和 Git SSH URL 結構相關的技術條件約束。 Azure DevOps 會在驗證期間接受用戶端所提供的第一個密鑰。 如果要求的存放庫此金鑰無效,要求會失敗,而不會嘗試任何其他可用的金鑰,因而產生下列錯誤:
針對 Azure DevOps,您必須設定 SSH 以明確使用特定密鑰檔案。 此程式與使用儲存在非預設位置的金鑰時相同。 告知 SSH 針對 Azure DevOps 主機使用正確的 SSH 密鑰。
答: Azure DevOps 盲目地接受客戶端在驗證期間提供的第一個密鑰。 如果要求的存放庫該金鑰無效,要求會失敗,並出現下列錯誤:
此失敗是因為所有 Azure DevOps URL 共用相同的主機名 (),因此 SSH 預設無法區分它們。 不過,您可以修改 SSH 組態,藉由為每個組織提供不同的密鑰來區分不同組織。 使用主機別名在 SSH 組態檔中建立個別 區段。
之後,不要使用實際的 URL,而是將現有遠端 中的主機名分別取代為 和 ,告訴 Git 您想要將每個存放庫的這些 URL 作為遠端。 例如, 會變成 。
答: 當您向 Azure DevOps Services 註冊新的 SSH 金鑰時,您會收到電子郵件通知,通知您何時將新的 SSH 金鑰新增至您的帳戶。
答: 如果您收到未起始的 SSH 金鑰註冊通知,您的認證可能會遭到入侵。
下一個步驟是調查您的密碼是否遭到入侵。 變更密碼一律是防禦此攻擊媒介的好第一步。 如果您是Microsoft Entra 使用者,請與您的系統管理員交談,以檢查您的帳戶是否從未知的來源/位置使用。
答: 某些 Linux 散發套件,例如 Fedora Linux,具有比 Azure DevOps 支援的更強 SSH 簽章演算法的加密原則(截至 2021 年 1 月)。 有開啟 的功能要求 可新增此支援。
您可以將下列程式代碼新增至 SSH 組態():
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/32028.html