開發者向GitHub版本庫寫入最常用到的協議是SSH協議,因為SSH協議使用公鑰認證,可以實現無口令訪問,而若使用HTTPS協議每次身份認證時都需要提供口令(可以通過在文件`~/.netrc`中寫入明文口令實現使用 HTTPS 協議時也能自動完成認證。具體格式參見ftp命令的MAN手冊中相關介紹)。使用SSH公鑰認證,就涉及到公鑰的管理。
## 3.3.1\. 用戶級公鑰管理
開發者可能會從不止一臺電腦訪問GitHub中的版本庫(用SSH協議),因不同的電腦有不同的公鑰/私鑰對,這就需要為GitHub賬號添加多個公鑰。點擊賬號設置中的“SSH Public Keys”進入SSH公鑰管理界面,如圖3-11所示。
[](https://box.kancloud.cn/2015-07-09_559de2c5492f9.png)
圖3-11:SSH多公鑰管理
如圖3-11,在創建gotgithub賬號一開始,就手工添加了名為“My Mac OS X”的公鑰,顯然這是為蘋果電腦準備的。圖中正在添加的名為“Key on Windows”是為Windows環境下使用SSH協議訪問GitHub準備的公鑰。
當添加了新的公鑰后,無論是從哪臺電腦(蘋果或PC)用SSH協議訪問版本庫時都擁有相同授權,即都是以gotgithub賬號身份來訪問。例如用戶級公鑰訪問GitHub的SSH服務,在提示信息中會顯示用戶ID,如下:
~~~
$ ssh -T git@github.com
Hi gotgithub! You've successfully authenticated, but GitHub does not provide shell access.
~~~
## 3.3.2\. 項目級公鑰管理
多增加一個用戶級別的公鑰,就意味著可以從另外一臺電腦訪問該用戶所有版本庫。但有時只希望從某臺電腦上向某一個版本庫“寫入”,其他版本庫則不可寫,這可以通過設置版本庫級別的公鑰認證實現。
以項目管理者(創建者)身份登錄GitHub,例如以gotgithub用戶身份訪問gotgithub/helloworld版本庫,進入到項目的管理頁面,選擇菜單中的“Deploy Keys”,即可設置項目級別公鑰。如圖3-12所示。
[](https://box.kancloud.cn/2015-07-09_559de2c94a9b3.png)
圖3-12:項目級公鑰管理
就像一個用戶可以設置多個用戶級公鑰一樣,也可以為一個項目設置多個項目級公鑰。無論是項目級公鑰還是用戶級公鑰都有同樣的限制:一個公鑰只能使用一次。
當使用項目級公鑰訪問GitHub的SSH服務,會在提示信息中顯示版本庫ID而非用戶ID。如下的命令輸出中顯示了版本庫IDgotgithub/helloworld。
~~~
$ ssh -i ~/.ssh/deploy-key -T git@github.com
Hi gotgithub/helloworld! You've successfully authenticated, but GitHub does not provide shell access.
~~~
- 前言
- 1. 探索GitHub
- 1.1. 什么是GitHub
- 1.2. GitHub亮點
- 1.3. 探索GitHub
- 2. 加入GitHub
- 2.1. 創建GitHub賬號
- 2.2. 瀏覽托管項目
- 2.3. 社交網絡
- 3. 項目托管
- 3.1. 創建新項目
- 3.2. 操作版本庫
- 3.3. 公鑰認證管理
- 3.4. 版本庫鉤子擴展
- 3.5. 建立主頁
- 4. 工作協同
- 4.1. Fork + Pull模式
- 4.2. 共享版本庫
- 4.3. 組織和團隊
- 4.4. 代碼評注
- 4.5. 缺陷跟蹤
- 4.6. 維基
- 5. 付費服務
- 5.1. GitHub收費方案
- 5.2. GitHub企業版
- 6. GitHub副產品
- 6.1. GitHub:Gist
- 6.2. 其他版本控制工具支持
- 6.3. 客戶端工具
- 6.4. 其他
- 7. 附錄:輕量級標記語言
- 貢獻者列表