每次通过git push或者fetch的时候,会被要求输入密码,很烦。通过在服务器加上自己的公钥,就不必再被要求密码验证了。
首先,公钥是针对SSH协议的,HTTPS协议方式的仓库是不可以使用这种方式的。所以第一步先看一下自己的仓库是不是用SSH协议的:查看.git/config
文件。
如果是下面这样的格式,就是HTTPS协议的。
1 2 3 |
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* |
改成下面这样:
1 2 3 |
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* url = git@github.com:username/projectname.git |
第二步,在服务器加上自己的ssh公钥。
一般,在~/.ssh/
下会有一个 id_rsa.pub
文件,通过下面这个命令将自己的公钥保存到服务器上,下一次,从这个服务器上的操作都不需要密码验证了(实际上,所有ssh操作都不需要再次输入密码了)。
1 |
$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub |
如果仓库托管在github上。登录github之后在个人的settings有SSH and GPG keys选项,打开,上文中id_rsa.pub
的内容复制过去就行了。
如果没有id_rsa.pub
,可以用ssh-keygen
(这是ssh提供的)产生一个。
以后,github的仓库也不需要密码了。
参考:
- http://www.cnblogs.com/hanxi/archive/2012/07/31/2616628.html
- http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
乌版图,真腻害了,我居然不会用,哈哈