git-push命令失败



我已经面临这个问题很长时间了。我可以ssh克隆repo并提交到同一个repo,但当尝试mvn clean release:clean release:prepare release:perform时,构建失败,如下所示。

[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] username@github.someCompany.com: Permission denied (publickey).
[ERROR] fatal: Could not read from remote repository.
[ERROR] 
[ERROR] Please make sure you have the correct access rights
[ERROR] and the repository exists.

问题是当我尝试使用mvn clean release:clean release:prepare release:perform时,它应该使用git@github.someCompany.com而不是username@github.someCompany.com。有人能帮我解决这个问题吗?

测试的一个变通方法是:

git config --global url.git@github.com:.insteadOf username@github.com:

(假设SSH URL中使用:(

这样,Git将被迫在其SSH URL中使用正确的用户。

SSH密钥使您可以使用Git存储库进行身份验证,而无需担心密码问题。SSH与Linux服务器用于允许远程访问的身份验证方法相同。

SSH密钥依赖于公私密钥身份验证。要使这种身份验证方法发挥作用,必须使用公钥配置Git服务器,并且本地计算机必须具有相应的私钥。

像Atlassian和GitHub这样的Git客户端要求您在使用SSH身份验证之前将公钥上传到他们的仪表板。

一个示例场景我们配置了一个名为ck-git的本地存储库。此存储库包含一个文件:README.md.

我们将把这个存储库链接到GitHub上的一个。为此,我们可以使用gitremote命令:

git remote add origin git@github.com:career-karma-tutorials/ck-git.git

我们已经创建了一个名为"origin"的远程程序,我们可以将代码推送到该远程程序。要将我们的本地存储库推送到GitHub,我们可以使用git-push命令:

git push -u origin master

此命令将我们的更改上载到"原始"远程服务器上的master分支。让我们看看当我们运行命令时会发生什么:

Permission denied (publickey).
fatal: Could not read from remote repository.

请确保您拥有正确的访问权限并且存储库存在。

我们遇到了一个错误。

解决方案#1:

检查您的密钥是否已使用在探索任何其他解决方案之前,我们应该确保我们的密钥用于建立SSH连接。我们可以使用ssh-add命令:

eval"$(ssh代理-s(";ssh添加-l-E md5第一个命令启动计算机上的SSH代理。下一个命令列出了在您的计算机上配置的所有SSH密钥。

现在您有了这个SSH密钥列表,请检查它们是否与您上传到GitHub、Bitbucket或其他版本控制系统的密钥匹配。如果列表中至少有一个键不匹配,则需要将其中一个添加到版本控制系统中。

解决方案#2

添加SSH密钥如果您尚未将SSH密钥添加到版本控制帐户,则可能会遇到此错误。将SSH密钥添加到Git存储库的方式因所使用的版本控制系统而异。

对于GitHub,您可以使用以下步骤:

使用我们在解决方案#1中讨论的命令记下您的SSH密钥打开GitHub,点击右上角的头像,点击“Settings”单击侧边栏中的"SSH和GPG密钥"向您的帐户添加SSH密钥要将SSH密钥添加到您的帐户,您必须首先拥有一个密钥。您可以使用以下命令生成一个:

ssh-keygen -t rsa -b 4096 -C "email@email.com"
ssh-add -K ~/.ssh-/id_rsa

如果在提示您从第一个命令中选择密钥名称时更改了密钥名称,请将其替换为"id_rsa"。

然后,运行以下命令查看您的公钥:

cat ~/.ssh/id_rsa.pub

这将为您提供上传到版本控制系统所需的字符串。

原因#3:使用错误的身份验证方法我们已将存储库配置为使用SSH URL:

git remote add origin git@github.com:career-karma-tutorials/ck-git.git

使用这个URL意味着我们必须使用SSH授权的密钥对来对我们的存储库进行身份验证。

只有当我们设置了SSH身份验证时,这才有可能。如果您想使用HTTP配置存储库,允许您使用用户名和密码进行身份验证,则必须使用HTTP URL:

git remote add origin https://github.com/career-karma-tutorials/ck-git

当我们将代码推送到远程服务器时,会要求我们提供Git用户名和密码。这将使我们有机会使用HTTP而不是SSH进行身份验证。

结论

"权限被拒绝(公钥(。致命:无法从远程存储库读取"错误是由您使用Git存储库进行身份验证的方式问题引起的。

要解决此错误,请确保您的Git帐户正在使用您的密钥。如果不是,请将您的密钥添加到Git。如果您没有公钥,并且希望使用公钥来通过Git进行身份验证,则需要创建一个公钥。

如果您不想使用SSH,则可能需要选择使用HTTP进行身份验证。您可以使用HTTP URL作为存储库的远程URL来完成此操作。

参考:https://git-scm.com/docs/git-push

最新更新