2013-07-31 33 views
0

所有,SSH如何與GiHub或到位桶

我使用SSH交談github上/到位桶,有時它的工作原理,但有時它只是失敗給我留下任何線索。當試圖找出問題時,我意識到我其實不太清楚它的工作方式:

  1. 如何選擇私鑰?
    我們可以使用ssh-add或pageant來加載私鑰,但可以加載多個密鑰 - 當發送請求後我如何收到挑戰時ssh客戶端如何決定使用哪個私鑰?
  2. 如何選擇公鑰?
    在GitHub服務器上有很多公鑰,當我向github發送請求時(比如git push),我不記得我需要指定在GitHub上註冊的用戶名(我們需要配置user.name ,但我認爲這只是爲了標記你的提交) - 所以GitHub如何找出接收請求時使用哪個公鑰,甚至GitHub知道哪個用戶發送請求(如何?),它如何選擇正確的公共密鑰從多個鍵 - 記得我可以添加超過1個鍵到我的帳戶。

謝謝。

+0

提供有關何時發生失敗的更多信息,儘管這可能是另一個問題,而不是一個如何問題,您也可以在這裏問一個「爲什麼」的問題,並且對於您真的想要答案感到困惑至。如果您想了解爲什麼有時您可以連接並且有時您無法連接,那麼您需要提供更多信息。 – vgoff

回答

2

默認情況下會選中〜/ .ssh/id_rsa文件。

如果您需要提供另一個密鑰,則可以在~/.ssh/config文件中使用IdentityFile指令。

Github知道哪個帳戶只是因爲在挑戰時,系統提供用戶名作爲您的主要挑戰序列的一部分,並且完成查找。然後交換密鑰,並進行驗證或拒絕。

我建議讓man pages在您的處置。這裏有一個關於OpenSSH project的很好的參考資料,關於它如何在一般意義上工作的更多信息。

Github已經根據自己的需要修改了他們的ssh守護進程,但大多數情況下,他們必須遵循規範,所以在外部,我們不會看到行爲上的差異,儘管我們獲得了連接到服務的好處快速通過身份驗證/授權,無論我們允許在存儲庫上執行什麼操作。