2016-09-02 40 views
0

這是第3天,我仍然無法解決以下問題:Git Bash是否通過ssh密鑰確定身份?

我最初創建了2年前的GitHub帳戶。我相信我爲此帳戶生成了一個SSH密鑰。我相信我已經將ssh密鑰加載到我的ssh-agent程序中,然後將公鑰放在我的GitHub帳戶上。

現在我最近創建了一個新的GitHub帳戶。我創建了一個回購,然後將該回購克隆到我的PC。在提交一對夫婦後,我試圖將更改推向回購。然而,它表示,我沒有權限回購,聲明'拒絕回執的權限 - oldusername沒有訪問權限'。所以看起來Git Bash在嘗試推動變化時引用了我的oldusername。

我試圖通過'git config user.name'等等來更改我的配置信息。但是,這似乎沒有解決問題。然後我偶然發現了一些說我需要SSH密鑰的東西。我深入瞭解了這一點,並認識到我目前的Git Bash引用了一個與我的舊帳戶相關的ssh密鑰。所以我在我的計算機上刪除了這個舊密鑰,並且還從舊的GitHub帳戶中刪除了該密鑰。

然後我開始生成一個新的SSH公鑰/私鑰對。我加載(或者我相信)新的私鑰給ssh-agent。然後我將公鑰添加到我的新GitHub帳戶中。請注意,我還將「密碼」選項留空,因爲我不明白它的直接目的。

經過這些更改後,我試圖將我對遠程倉庫所做的更改推送給客戶。但是,我再次收到錯誤「oldusername無權將更改推送到回購」。

因此,看起來我的Git Bash仍在引用我的舊用戶名。爲什麼是這樣? Git Bash使用ssh-agent加載的ssh-key來確定你的身份嗎?如果是這種情況,爲什麼它仍然會引用我的舊GitHub用戶名?附:我在Windows 10上,Git 2.9.3.2。

有什麼想法?

+0

您是否重新啓動了您的代理? 'ssh-add -L'會列出它所知道的所有ssh密鑰。如果它有你不指望它的密鑰,你可以用'ssh-agent -k'來停止它,然後用'ssh-agent'重新啓動它。 –

+0

你是否關閉了終端;也許它正在使用來自終端的舊會話。 – slopeofhope

+0

代理持續的時間超過終端會話。您需要重新啓動代理(或重新啓動)。 –

回答

1

我認爲這裏的關鍵是您使用HTTPS來克隆新的存儲庫。

我懷疑證書助手正在緩存您的憑證。看到這一點:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows

在Windows上,如果你已經使用了wincred助手(git config --global credential.helper wincred),那麼這個存儲在Windows憑據存儲其中有一個控制面板界面,您可以刪除或編輯您的憑據存儲的憑證。比如看到這一點:

enter image description here

與這家商店,你的細節由Windows登錄安全,可以堅持在多個會話。這是在Git for Windows 1.8.1.1中添加的。

因此,要麼:

  1. 嘗試清除您的HTTPS使用以下,然後再試一次克隆回購憑據緩存:

    混帳憑據osxkeychain擦除主機= github上。COM協議= HTTPS

OR,

  • 編輯使用Windows控制面板的憑證管理器憑證。
  • +0

    爲什麼我以前從來沒有聽說過這個Windows程序?這絕對是這樣。非常感謝你! – Izzo