//—————————————
==================================================================
之前开始用github时是在ubuntu下按着官方的新手指南搞定的。但最近一直在用fedora,所以也想在fedora下用github,配置的时候很顺利,就是在git push的每次都需要输入username和password,而我是配置好公钥登陆的。用ssh -T [email protected] 也是成功用公钥登陆的。
查看了下~/.gitconfig,发现和ubuntu下的一样,google看到一篇《GitHub使用简介》,里面说了git push的两种方式,SSH方式和HTTPS方式。
在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的。当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 。《Help.GitHub - SSH key passphrases》里也说了用SSH更方便更安全,不需要去输入长长的密码。
我去看了下repo目录下的.git/config,果然,我的url是HTTPS形式。
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* url = https://[email protected]/username/projectname.git
因为远程版本库的url是HTTPS,估计是我git clone的时候用HTTPS链接造成的
所以问题就出在这了,每次都很不方便,都要输入用户名和密码。
为了使用SSH公钥的方式认证,我把config的url改成下面这样
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* url = [email protected]:username/projectname.git
这样我git push的时候又可以用SSH公钥认证而不用去输入用户名和密码,不仅方便,而且更安全。
有没有觉得,每次git pull 或git push的时候,都需要重新输入密码,很麻烦。搜了下找到一种方法记住ssh连接的密码,同时把Git repository的密码保存下来,下面就来一步一步做吧。。
local:~ yourname$ ssh-keygen -t rsa
然后依次回车,输入密码,这个密码和SSH的帐号密码无关。
Generating public/private rsa key pair.
Enter file in which to save the key (/u/kim/.ssh/id_rsa): 【回车】
Enter passphrase (empty for no passphrase): 【第一次密码】
Enter same passphrase again: 【第二次密码】
Your identification has been saved in /u/kim/.ssh/id_rsa.
Your public key has been saved in /u/kim/.ssh/id_rsa.pub.
local:~ yourname$ cat ~/.ssh/id_rsa.pub | ssh username@yourhost 'cat >> .ssh/authorized_keys'
local:~ yourname$ ssh [email protected]
如果此时不需要你输入密码,那么恭喜你设置成功了。现在你再执行git pull 或git push就不需要输入密码了。
参考:Store your git https passwords in your OS X Keychain
ps: 如果更换主机ip地址等,会出现ssh的一个提示,去除这个提示,请使用: