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的地方