首页 > 技术文章 > oschina代码仓库远程push,pull免密实操总结

jiangtian 2016-12-12 14:27 原文

刚做项目,用到开源中国(oschina)的git仓库,一个多月一直在痛苦的反复输密码的过程中度过。中间配置过几次免密登录,但总是时而登的上去,时而不行,大多数情况不行。近几日项目做完了,正好有空把这个问题给解决了,于是有了这篇经验总结。

以下内容来自csdn,步骤没错,但中间有几个我遇到的坑,导致始终配置不成功,用红颜色字标识出来,供遇到同样问题的童鞋参考。

以下命令操作是在git-bash中完成的。

1.首先用ssh-keygen生成sshkey ,这里是用ssh的方式连接,不是https,也不是http,我在这里栽了坑,因为后面有相应的配置。

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

xxxxx@xxxxx.com是个人邮箱

出现以下界面,这里我默认将生成的公私钥放在了系统默认的目录,/c/windows/system32/config/systemprofile/.ssh/id_rsa,当然也可以将以上命令改为ssh-keygen -t rsa -C "xxxxx@xxxxx.com" -f "d:\id_rsa",-f后面是自己指定目录,公私钥id_rsa及id_rsa.pub将生成在那里,最终要copy走,因此放哪里都无所谓。在命令输入后只要一路回车就行,不必输入中间提示的passphrase。最终的界面如下:

 

 

2.生成两个文件id_rsa和id_rsa.pub,copy这两个文件到.ssh文件夹下,windows中.ssh文件夹一般在系统盘的用户下(c:\users\),这里要记得就是你当前使用的用户之下,开始菜单右上角那个点进去:

 


3.用编辑器把id_rsa.pub打开(注意一定不要加入其他字符比如空格,否则远程跟本地可能匹配不上),复制文本添加到自己账号oschina的公钥列表中。登录码云(http://git.oschina.net/),进到了自己的账户,然后点击自己头像进入用户中心界面如下图:

 

4.在git bash中输入

ssh -T git@git.oschina.net  

若返回Welcome to Git@OSC, 你的名字! 表示添加成功。若不成功,则是以上操作步骤有误。

注意事项:

生成的sshkey文件一定要命名为id_rsa,因为ssh默认读id_rsa的sshkey。

 

5.在完成以上配置后,提交代码还是需要输入用户名和密码,可以到本地git repository(代码仓库,比如我的在d:\wamp\www底下,千万不要使用搜索在整个计算机搜索,可能有多个代码仓库遗留,一定是在当前正在做项目的代码仓库中,这里我栽了个大坑,下图即本地仓库的.git/config所在位置)的.git\config文件,如果url使用的是https协议,改为git协议即可。

修改前

  1. [remote "origin"]  
  2.     url = https://git.oschina.net/oschina/git-osc.git  
  3.     fetch = +refs/heads/*:refs/remotes/origin/*  

修改后

  1. [remote "origin"]  
  2.     url = git@git.oschina.net:oschina/git-osc.git  (这个地址到自己当前工程的oschina端代码仓库获取,如下图:
  3.     fetch = +refs/heads/*:refs/remotes/origin/*  

注意:一定要选ssh获取到那个地址,复制到上面url处,保存,退出,即可实现免密pull及push了。

最后再声明一句,刚在写总结的时候,又用第一个命令生成了一个新的密钥,造成登录失败,也就是密钥一旦在一台机器上生成,并添加到了远程,如果二次生成会失效,需要重做一遍以上步骤,切记切记。

推荐阅读