windows下配置GitHub公钥认证管理

开发者向GitHub版本库写入最常用到的协议是SSH协议,因为SSH协议使用公钥认证,可以实现无口令访问,而若使用HTTPS协议每次身份认证时都需要提供口令[1]。使用SSH公钥认证,就涉及到公钥的管理。

用户级公钥管理

开发者可能会从不止一台电脑访问GitHub中的版本库(用SSH协议),因不同的电脑有不同的公钥/私钥对,这就需要为GitHub账号添加多个公钥。点击 Account settings (账号设置)=》SSH Keys”进入SSH公钥管理界面,如下图所示

 

C:\Users\Aleda> ssh -T git@github.com
Hi medesky! You've successfully authenticated, but GitHub does not provide shell access.

项目级公钥管理

多增加一个用户级别的公钥,就意味着可以从另外一台电脑访问该用户所有版本库。但有时只希望从某台电脑上向某一个版本库“写入”,其他版本库则不可写,这可以通过设置版本库级别的公钥认证实现。

以项目管理者(创建者)身份登录GitHub,例如以gotgithub用户身份访问medesky/helloworld版本库,进入到项目的管理页面,选择菜单中的“Deploy Keys”,即可设置项目级别公钥。如下图所示

就像一个用户可以设置多个用户级公钥一样,也可以为一个项目设置多个项目级公钥。无论是项目级公钥还是用户级公钥都有同样的限制:一个公钥只能使用一次。

当使用项目级公钥访问GitHub的SSH服务,会在提示信息中显示版本库ID而非用户ID。如下的命令输出中显示了版本库ID medesky/helloworld

C:\Users\Aleda> ssh -i ~/.ssh/id_rsa -T git@github.com
Hi medesky/helloworld! You've successfully authenticated, but GitHub does not provide shell access.

Windows下利用GitBash生成public ssh key

用ssh生成key

E:\GitHub> ssh
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-i identity_file] [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-w local_tun[:remote_tun]] [user@]hostname [command]
E:\GitHub> cd ~
C:\Users\Aleda> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Aleda/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Aleda/.ssh/id_rsa.
Your public key has been saved in /c/Users/Aleda/.ssh/id_rsa.pub.
The key fingerprint is:
a1:40:df:10:10:10:31:14:92:84:1a:2b:c1:05:15:1d Aleda@BLUELS

将生成的公钥文件的内容拷贝到在github中你需要添加key的地方

posted @ 2013-06-18 10:16  Tang Ru Cheng  阅读(1225)  评论(0编辑  收藏  举报