簡體   English   中英

git-push 命令失敗

[英]The git-push command failed

我現在面臨這個問題很長時間了。我能夠 ssh 克隆存儲庫並提交到相同的存儲庫,但是當嘗試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 服務器必須配置有公鑰,並且您的本地計算機必須具有相應的私鑰。

Git 客戶端(如 Atlassian 和 GitHub)要求您將公鑰上傳到他們的儀表板,然后才能使用 SSH 身份驗證。

示例場景 我們已經配置了一個名為 ck-git 的本地存儲庫。 此存儲庫包含一個文件: README.md.

我們將把這個存儲庫鏈接到 GitHub 上的一個。 為此,我們可以使用 git 遠程命令:

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

我們創建了一個名為“origin”的遙控器,我們可以將代碼推送到該遙控器。 要將我們的本地存儲庫推送到 GitHub,我們可以使用 git 推送命令:

git push -u origin master

此命令將我們的更改上傳到我們的“原始”遠程服務器上的主分支。 讓我們看看當我們運行命令時會發生什么:

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

請確保您具有正確的訪問權限並且存儲庫存在。

我們遇到了一個錯誤。

解決方案#1:

檢查您的密鑰是否已使用 在我們探索任何其他解決方案之前,我們應確保我們的密鑰用於建立 SSH 連接。 我們可以使用 ssh-add 命令來做到這一點:

eval "$(ssh-agent -s)" ssh-add -l -E md5 第一個命令在您的計算機上啟動 SSH 代理。 下一個命令列出了您機器上配置的所有 SSH 密鑰。

現在您已經有了 SSH 密鑰列表,請檢查它們是否與您上傳到 GitHub、Bitbucket 或您使用的其他版本控制系統的密鑰相匹配。 如果列表中至少有一個鍵不匹配,則需要將其中一個添加到版本控制系統中。

解決方案#2

: 添加 SSH 密鑰 如果您尚未將 SSH 密鑰添加到版本控制帳戶,您可能會遇到此錯誤。 將 SSH 密鑰添加到 Git 存儲庫的方式因您使用的版本控制系統而異。

對於 GitHub,可以使用以下步驟:

使用我們在解決方案#1中討論的命令記下您的 SSH 密鑰 打開 GitHub,單擊右上角的頭像,然后單擊“Settings”單擊側欄中的“SSH 和 GPG 密鑰” 添加 Z765553E6C7AC87809C389ACB 到您的帳戶將 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM