疑難排解認證協助程式和HTTPS連線 AWS CodeCommit - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可繼續正常使用此服務。了解更多」

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解認證協助程式和HTTPS連線 AWS CodeCommit

下列資訊可協助您疑難排解使用 AWS CLI 和隨附的認證協助程式連線HTTPS至 CodeCommit 儲存庫時的常見問題。

注意

雖然認證協助程式是連線至 CodeCommit 使用聯合存取、身分識別提供者或暫時認證的支援方法,但建議的方法是安裝及使用公用git-remote-codecommit程式。如需詳細資訊,請參閱 HTTPS 連線的設定步驟AWS CodeCommit與git-remote-codecommit

運行git config命令以配置憑證幫助程序時收到錯誤

問題:當您嘗試運行 git config 命令來配置憑據幫助程序與 CodeCommit 存儲庫進行通信時,您會看到一個錯誤,指出參數太少,或者使用提示建議 Git 配置命令和語法。

可能的修正:此錯誤的最常見原因是 Windows 作業系統上的命令使用單引號,或者在 Linux、macOS 或 Unix 作業系統中使用雙引號作為命令。正確的語法如下:

  • Windows:git config --global credential.helper "!aws codecommit credential-helper $@"

  • Linux、macOS 系統或 Unix:git config --global credential.helper '!aws codecommit credential-helper $@'

嘗試複製儲存庫時,看到讀取使用者名稱時發生錯誤

問題:當您嘗試使用認證協助程式複製存放庫時,您會看到一個錯誤,指出系統無法讀取存放庫的使用者名稱URL。

可能的修復:此錯誤的最常見原因是 .gitconfig 文件未在您的計算機上正確創建或配置。打開您的 .gitconfig 文件,並確保認證幫助程序設置正確。如果您使用的是執行 Linux、macOS 或 Unix 的電腦,也請確定已針對您的系統設定$HOME 正確的值。

我在 Windows 中使用登入資料協助程式時發生找不到命令的錯誤

問題:更新後 AWS CLI,到 CodeCommit 存儲庫的憑據幫助程序連接失敗aws codecommit credential-helper $@ get: aws: command not found

因:此錯誤的最常見原因是您的 AWS CLI版本已更新為使用 Python 3 的版本。該MSI軟件包存在已知問題。若要驗證您是否具有受影響的版本,請開啟命令列並執行下列命令:aws --version

如果輸出 Python 版本開頭為 3,表示您具有受影響的版本。例如:

aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52

可能的修正:您可執行以下其中一項來解決此問題:

  • 使用 Python 和點子而不是MSI. AWS CLI 如需詳細資訊,請參閱AWS CLI 在視窗上安裝 Python、點子和安裝。

  • 手動編輯 .gitconfig 檔案,變更 [credential] 區段來明確指向本機電腦上的 aws.cmd。例如:

    [credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true
  • 執行git config命令以更新.gitconfig檔案以明確參照aws.cmd,並根據需要手動更新PATH環境變數以包含指令的路徑。例如:

    git config --global credential.helper "!aws.cmd codecommit credential-helper $@" git config --global credential.UseHttpPath true

當我連接到 CodeCommit 存儲庫時,系統提示我輸入用戶名

問題:當您嘗試使用認證協助程式與 CodeCommit 存放庫通訊時,會出現一則訊息,提示您輸入使用者名稱。

可能的修復:配置您的配置 AWS 文件或確保您使用的配置文件是您配置用於使用的配置文件 CodeCommit。如需設定的詳細資訊,請參閱HTTPS 連線的設定步驟AWS CodeCommitLinux、MacOS 或 Unix 上的儲存庫AWS CLI憑證助手HTTPS 連線的設定步驟AWS CodeCommit使用視窗上的儲存庫AWS CLI憑證助手。如需有關IAM、存取金鑰和秘密金鑰的詳細資訊,請參閱管理IAM使用者的存取金鑰如何取得認證?

適用於 macOS 的 Git: 我成功配置了憑據幫助程序,但現在我被拒絕訪問我的存儲庫 (403)

問題:在 macOS 上,認證助手似乎無法如預期般存取或使用您的認證。這可能是因為兩個不同的問題所導致:

  • 會針 AWS CLI 對 AWS 區域 不同於存放庫所在的設定。

  • Keychain Access 公用程式所儲存的登入資料那時已過期。

可能的修正:若要確認 AWS CLI 是否已針對正確的區域設定,請執行aws configure命令,然後檢閱顯示的資訊。如果 CodeCommit存放庫與顯示的存放庫 AWS 區域 不同 AWS CLI,您必須執行命aws configure令並將值變更為適合該區域的值。如需詳細資訊,請參閱 步驟 1:初始配置CodeCommit

OS X 和 macOS 上發行的 Git 預設版本會使用「鑰匙圈存取」公用程式來儲存產生的認證。出於安全原因,為訪問存儲 CodeCommit 庫生成的密碼是臨時的,因此存儲在鑰匙串中的憑據在大約 15 分鐘後停止工作。如果您只使用訪問 Git CodeCommit,請嘗試以下操作:

  1. 在終端機,執行 git config 命令來尋找 Keychain Access 公用程式定義所在的 Git 組態檔案 (gitconfig)。根據您的本機系統和偏好設定,您可能會有多個 gitconfig 檔案。

    git config -l --show-origin | grep credential

    在此命令的輸出中,搜索類似於以下內容的結果:

    file:/path/to/gitconfig credential.helper=osxkeychain

    在此行開始處所列的檔案為您必須編輯的 Git 組態檔案。

  2. 若要編輯 Git 設定檔,請使用純文字編輯器或執行下列命令:

    nano /usr/local/git/etc/gitconfig
  3. 使用下列其中一個策略修改組態:

    • 註解掉或刪除包含的認證區段helper = osxkeychain。例如:

      # helper = osxkeychain
    • 更新aws credential helperosxkeychain憑據幫助器部分以具有上下文。例如,如果osxkeychain用於進行驗證 GitHub:

      [credential "https://git-codecommit.us-east-1.amazonaws\.com"] helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true [credential "https://github.com"] helper = osxkeychain

      在此組態中,當遠端主機符合 "" 時,Git 會使用osxkeychain說明器,而當遠端主機符合 https://github.com "" 時,就會使用認證協助程式。https://git-codecommit\.us-east-1\.amazonaws.com

    • 在憑證助手之前包含一個空字符串助手。例如,使用名為的配置文件時不使用osxkeychain幫助器 CodeCommitProfile 與CLI:

      [credential] helper = helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true
      提示

      如果您希望它排除所有配置文件, CodeCommit 則還可以將空字符串幫助程序行後面的行配置為不匹配:

      helper = !aws codecommit credential-helper $@

    或者,如果您要繼續使用 Keychain Access 公用程式來快取其他 Git 儲存庫的登入資料,請修改標頭而非將它變更為註解。例如,若要允許快取的認證 GitHub,您可以修改標頭,如下所示:

    [credential "https://github.com"] helper = osxkeychain

如果您使用 Git 存取其他儲存庫,您可以設定「鑰匙串存取」公用程式,這樣它就不會為您的 CodeCommit 儲存庫提供認證。若要設定 Keychain Access 公用程式:

  1. 開啟 Keychain Access 公用程式。(您可以使用 Finder 找到它。)

  2. 搜尋git-codecommit.us-east-2.amazonaws.com和取代 us-east-2 與存儲庫所在的 AWS 區域 位置。反白此列,開啟操作功能表 (按一下滑鼠右鍵),然後選擇 Get Info (取得資訊)

  3. 選擇 Access Control (存取控制) 標籤。

  4. Confirm before allowing access (允許存取之前確認) 中,選擇 git-credential-osxkeychain,然後選擇減號從清單移除它。

    注意

    從清單移除 git-credential-osxkeychain 之後,每當您執行 Git 命令時就會看到對話方塊。選擇 Deny (拒絕) 以繼續。如果您覺得快顯的干擾性太大,以下是一些替代選項:

如果想要讓 Git 完全無法使用 Keychain Access 公用程式,您可以設定 Git 以停止使用 osxkeychain 做為登入資料協助程式。例如,如果您開啟終端機並執行命令 git config --system credential.helper,而它傳回 osxkeychain,就表示 Git 設定為使用 Keychain Access 公用程式。您可以執行下列命令來加以變更:

git config --system --unset credential.helper

請注意,使用此--system選項執行此命令會變更所有使用者的全系統 Git 行為,而且如果您除了使用其他儲存庫服務之外,這可能會對其他使用者或其他儲存庫產生意外後果。 CodeCommit另外,此方法可能需要使用 sudo,而且您的帳戶可能沒有可套用此變更的足夠系統許可。請務必再次執行 git config --system credential.helper 命令來驗證已成功套用命令。如需詳細資訊,請參閱自訂 Git - Git 組態Stack Overflow 上的此文章

適用於 Windows 的 Git:我已安裝適用於 Windows 的 Git,但現在拒絕我存取儲存庫 (403)

問題:在 Windows 上,登入資料協助程式似乎未如預期存取或使用您的登入資料。這可能是因為不同的問題所導致:

  • 會針 AWS CLI 對 AWS 區域 不同於存放庫所在的設定。

  • 根據預設,Windows 版 Git 會安裝與使用認證協助程式的 CodeCommit 連線不相容的 Git AWS 認證管理員公用程式。安裝時,即使認證協助程式已安裝 AWS CLI 並設定為連線,也會導致存放庫的連線失敗 CodeCommit。

  • 某些版本的 Git 可能不完全符合 RFC2617RFC4559,這可能會導致 Git 認證和. AWS CLI如需詳細資訊,請參閱版本 2.11.0(3) 未請求輸入使用者名稱/密碼

可能的修正:

  • 如果您嘗試使用隨附的認證協助程式 AWS CLI,請考慮使用 Git 認證來連線,HTTPS而不是使用認證協助程式。為您的IAM使用者設定的 Git 認證與 Windows 版的 Git 認證管理員相容,不同於 AWS CodeCommit. 如需詳細資訊,請參閱 適用於使用 Git 認證的 HTTPS 使用者

    如果您要使用認證協助程式,若要確認 AWS CLI 是否設定正確 AWS 區域,請執行aws configure命令,然後檢閱顯示的資訊。如果 CodeCommit 存放庫與顯示的存放庫 AWS 區域 不同 AWS CLI,您必須執行命aws configure令並將值變更為適合該區域的值。如需詳細資訊,請參閱 步驟 1:初始配置CodeCommit

  • 如果可能,請解除安裝並重新安裝適用於 Windows 的 Git。安裝適用於 Windows 的 Git 時,請清除在安裝 Git Credential Manager 公用程式時所用之選項的核取方塊。此 Credential Manager 與 AWS CodeCommit的登入資料協助程式不相容。如果您已安裝 Git 認證管理員或其他認證管理公用程式,但不想解除安裝它,您可以修改.gitconfig檔案並新增認證管理 CodeCommit:

    1. 開啟 [控制台],選擇 [認證管理員],然後移除所有儲存的認證 CodeCommit。

    2. 在任何純文字編輯器 (例如記事本) 中開啟 .gitconfig 檔案。

      注意

      如果您使用多個 Git 設定檔,您可能同時有本機和全域 .gitconfig 檔案。請務必編輯適當的檔案。

    3. 將以下區段新增到您的 .gitconfig 檔案:

      [credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
    4. 儲存檔案,然後開啟新的命令列工作階段,之後再次嘗試連接。

    如果您想要在連線至其他託管的儲存庫 (例如儲存庫) AWS CodeCommit 時連線到 CodeCommit 儲存庫和其他認證管理系統時使用認證協助程式,也可以 GitHub 使用此方法。

    若要將使用的登入資料協助程式重設為預設值,您可以在執行 git config 命令時使用 --system 選項,而不是 --global--local

  • 如果您在 Windows 電腦上使用 Git 認證,您可以在連接字串中加入 Git 認證使用者名稱,嘗試解決任何RFC不相容性問題。例如,解決問題並克隆名為的存儲庫 MyDemoRepo 在美國東部 (俄亥俄) 地區:

    git clone https://Your-Git-Credential-Username@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
    注意

    如果在您的 Git 登入資料使用者名稱中有一個 @ 字元,則這種方法將沒有作用。您必須對字URL元進行-encode (也稱為URL逸出或百分比編碼)。