针对AWS CodeCommits运行git clone会出现403错误

时间:2015-12-29 19:13:57

标签: git amazon-web-services aws-codecommit

我的本​​地笔记本电脑是Mac。

  1. 正确配置了ssh密钥。这是〜/ .ssh / config

    的内容

    $sql="INSERT into payment_in('Date','name','value') values('".now()."','".$a."',".$b.")";'

  2. 运行ssh barthea让我

    Host barthea
       Hostname git-codecommit.us-east-1.amazonaws.com
       User AVVVVVVVVVVVVVVVVVQ
       IdentityFile ~/.ssh/aws-aws.pem
    

    ` 2.我创建了一个带有密码和访问密钥的IAM用户bruce666,使该用户成为“团队”组的一部分。然后我创建了一个包含“AWSCodeCommitPowerUsers”的策略,并将此策略分配给“团队”。最后将bruce666分配给“团队”。此时,bruce666可以通过管理控制台访问CodeCommit中的任何仓库。

    1. 我运行了 aws config --profile bruce666 ,用他的访问权限和密钥,他的区域和json指定格式。此时,我能够通过运行 aws codecommit get-repository --repository-name rekha --profile bruce666

    2. 在CodeCommmit中创建rekha repo。
    3. 我可以创建几个虚拟文件,运行 git init git add。 git commit -m“1” git add origin https://git-gitcode.amzonaws.com/repos/v1/rekha git push -u origin master 并且该操作将成功。

    4. 但是,当我运行 git clone ssh://git-gitcode.amazonaws.com/repos/v1/rekha 时,我会“致命:无法访问”{{3 }:'请求的URL返回错误:403“什么给出?

14 个答案:

答案 0 :(得分:15)

在MAC上,如果上述技巧无效,请执行以下操作:

  1. 打开钥匙串访问
  2. 搜索CodeCommit。您应该找到以下内容:

enter image description here

  1. 选择“ git-codecommit ....”,然后按Delete
  2. 确认删除。

现在重试。它应该工作。遇到错误403时,您可能下次也必须再次执行此操作。

答案 1 :(得分:7)

在Windows中使用git push命令时,我也遇到同样的403错误。我完成了AWS文档中提到的所有设置,但未解决我的问题。之后我通过Windows Credential查看了git凭证集,如屏幕所示。我找到了而不是git https凭证,它设置了访问密钥/密钥(不知道如何)。

enter image description here

点击编辑链接,使用为AWS用户生成的适当git凭证更新凭证,一切正常。

答案 2 :(得分:4)

This helpful text is found on the AWS documentation for codecommit and Windows integration

  

如果你安装的Git for Windows包含了Git Credential   管理器实用程序,您将看到403错误或提示提供   在前几个之后,凭据进入Credential Manager实用程序   连接尝试。解决这个问题最可靠的方法是   卸载然后重新安装Git for Windows,没有选项   Git Credential Manager实用程序,因为它与AWS不兼容   CodeCommit。

     

如果您想保留Git Credential Manager实用程序,   您必须执行其他配置步骤才能使用AWS   CodeCommit,包括手动修改.gitconfig文件   指定AWS CodeCommit的凭证帮助程序的使用时间   连接到AWS CodeCommit。

     

从中删除所有存储的凭据   Credential Manager实用程序(您可以在Control中找到此实用程序   面板)。

     

删除任何存储的凭据后,添加   跟随.gitconfig文件,保存它,然后尝试连接   再次从新的命令提示符窗口:

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

此外,您可能必须通过指定--system而不是--global或重新配置您的git配置设置   在所有连接按预期工作之前--local。

这最后一部分适用于我的情况,但是当我运行git config --system时它没有按预期运行,但是在aws codecommit命令之前附加了aws configure。

所以我必须在git中运行它来查找系统配置文件的位置。

git config --list --show-origin

然后我将建议的部分从AWS添加到我的c:/users/username/.gitconfig和我的c:/ ProgramData / Git / config文件中。

在那个git push开始工作之后 - 即使我在我的回复之前得到了错误

"git: 'credential-aws' is not a git command. See 'git --help'."

答案 3 :(得分:3)

对我来说,获取错误的根本原因是无论我在OSX上使用哪个版本的git,GIT总是从文件中获取使用osxkeychain的credential.helper配置:

/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig

摆脱这个解决了我的问题,并没有破坏任何东西。

答案 4 :(得分:2)

我解决了。

403错误消息是一个特定的Git错误消息。我添加了两个AWS指定的帮助程序命令:

git config --global credential.helper '!aws --profile bruce666 codecommit credential-helper $@'
git config --global credentials.helper UseHttpPath=true

并且处理了这个问题。

本地目录中的 .git / config 文件(在克隆刚刚创建的Codecommit存储库之前,应该如下所示:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[credential]
    helper = !aws --profile bruce666 codecommit credential-helper $@
    UseHttpPath = true
[remote "origin"]
    url = https://git-codecommit.us-east-1.amazonaws.com/v1/repos/barthea
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

.git / config 文件中所述,您使用https而不是ssh进行克隆。我一定不能使用OSX附带的默认版本的git,因为我没有遇到任何工具链问题。

答案 5 :(得分:2)

我在OSX中的情况。

第一步:

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credentials.helper UseHttpPath=true

但是,验证git config --list --show-origin

file:/usr/local/etc/gitconfig   credential.https://git-codecommit.eu-west-1.amazonaws.com.helper=!aws codecommit credential-helper $@
file:/usr/local/etc/gitconfig   credential.helper=osxkeychain
file:/Users/mine/.gitconfig  user.name=my-user
file:/Users/mine/.gitconfig  user.email=my@gmail.com
file:/Users/mine/.gitconfig  filter.lfs.clean=git-lfs clean -- %f
file:/Users/mine/.gitconfig  filter.lfs.smudge=git-lfs smudge -- %f
file:/Users/mine/.gitconfig  filter.lfs.process=git-lfs filter-process
file:/Users/mine/.gitconfig  filter.lfs.required=true
file:/Users/mine/.gitconfig  credential.helper=!aws codecommit credential-helper $@
file:/Users/mine/.gitconfig  credential.usehttppath=true

之前没有第一行,并且git优先使用osxkeychain。因此,我不得不做git config --system ...

cat /usr/local/etc/gitconfig                                             
[credential "https://git-codecommit.eu-west-1.amazonaws.com"]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true
[credential]
    helper = osxkeychain

因此,指定URL是为了在存储其他凭据的情况下进行回退。

更新 https://docs.aws.amazon.com/codecommit/latest/userguide/troubleshooting-ch.html

由于某些原因,有时似乎未添加 UseHttpPath = true 。因此可以(应该)将其添加到[凭据]

答案 6 :(得分:0)

以下解决方案适用于在Windows 10上使用Git Bash的少数开发人员。

如果在“ 连接到存储库”选项卡上选择Windows作为操作系统,则命令格式如下:

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

但是,如果您使用Git Bash,请改为选择“ Linux,MacOS或Unix”选项。 注意第一行的单引号而不是双引号。

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

好运。

已推荐: https://forums.aws.amazon.com/thread.jspa?threadID=198356 发表:mwhardesty

答案 7 :(得分:0)

致命:无法访问“ https://git-codecommit.yourregion.amazonaws.com/v1/yourrepositoryname/”:请求的URL返回错误:403

由于以下区域而发生

  1. 确保您的用户已附加codecommitfullaccess策略。
  2. 确保本地aws cli配置中的默认区域与创建存储库的区域相同。如果未重置,则如下所示aws cli命令中的默认区域
  

aws配置

  1. 确保存储库中是否存在

答案 8 :(得分:0)

运行以下命令后,我必须将以下提到的策略添加到IAM用户以解决此问题。 refrence

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

政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:*"
            ],
            "Resource": "*"
        }
    ]
}

答案 9 :(得分:0)

我的默认aws凭证出了点问题,我再次运行aws configure,没有配置文件,重新启动了终端,然后就可以了。

答案 10 :(得分:0)

您需要确保您的AWS凭证不仅具有访问CodeCommit的权限,而且还没有附加全面的拒绝策略。在我们的组织中,我们要求所有控制台帐户都拥有MFA,这确实会导致以编程方式访问时出现问题。

一个好的解决方案(如果这是您的问题)将是直接添加附加的codecommit策略来创建另一个没有控制台访问权限的IAM用户(在本例中,MFA拒绝来自该用户所在的IAM组)。

说明:此答案适用于当您使用IAM凭据和CodeCommit Git扩展(而不是IAM Git凭据)时,尽管我怀疑在这种情况下也是如此。

答案 11 :(得分:0)

在尝试从AWS克隆或提取代码时要求输入用户名和密码时,而不是手动复制密码,只需键入每个字母即可输入密码。这解决了我的问题。

答案 12 :(得分:0)

就我而言,我遇到了权限问题。

您需要将 AWSCodeCommitFullAccess 策略附加到您的 IAM 用户,以授予您对 CodeCommit 的访问权限。

enter image description here

答案 13 :(得分:0)

问题(在 Ubuntu 上)

<块引用>

$ git 克隆 https://git-codecommit.ap-southeast-1.amazonaws.com/v1/repos/xx
克隆到 'xx'...
致命:无法访问“https://git-codecommit.ap-southeast-1.amazonaws.com/v1/repos/xx/”: 请求的 URL 返回错误:403

解决方案:

第 1 步:

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

检查:

cat ~/.gitconfig 
[user]
    email = your-email
    name = your-name
[credential]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true

第 2 步:

  1. 服务 > IAM
  2. 点击用户(左侧面板)
  3. 点击您的用户名(主面板)
  4. 点击Add permissions
  5. 点击Attach existing policies directly
  6. Filter policies 上,输入 AWSCodeCommitFullAccess
  7. 选中政策旁边的复选框,然后点击 Next: Review
  8. 点击Add permissions

结果

<块引用>

$ git 克隆 https://git-codecommit.ap-southeast-1.amazonaws.com/v1/repos/xx
克隆到“xx”...
远程:计数对象:3,完成。
解包对象:100% (3/3),223 字节 | 223.00 KiB/s,完成。

参考

  1. Getting started with Git and AWS CodeCommit