多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 3.3\. 公钥认证管理 开发者向GitHub版本库写入最常用到的协议是SSH协议,因为SSH协议使用公钥认证,可以实现无口令访问,而若使用HTTPS协议每次身份认证时都需要提供口令(可以通过在文件`~/.netrc`中写入明文口令实现使用 HTTPS 协议时也能自动完成认证。具体格式参见ftp命令的MAN手册中相关介绍)。使用SSH公钥认证,就涉及到公钥的管理。 ## 3.3.1\. 用户级公钥管理 开发者可能会从不止一台电脑访问GitHub中的版本库(用SSH协议),因不同的电脑有不同的公钥/私钥对,这就需要为GitHub账号添加多个公钥。点击账号设置中的“SSH Public Keys”进入SSH公钥管理界面,如图3-11所示。 [![../images/ssh-public-keys.png](http://www.worldhello.net/gotgithub/images/ssh-public-keys.png)](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所示。 [![../images/deploy-keys.png](http://www.worldhello.net/gotgithub/images/deploy-keys.png)](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. ```