公司内外统一使用192.168.16.178:8080的http代理,导致git的21端口无法在命令行连接到github上,于是想到使用http代理ssh,废话不多说了,下面写一下我的做法
安装Git
这个具体怎么做在这里找
生成密匙
ssh-keygen -t rsa -C 'your email' #生成两个文件 id_rsa id_rsa.pub
把其中的后缀是pub的文件内容以文本方式打开放到github的ssh keys中要在本地导入你自己的私匙id_rsa导入到ssh-agent中方法到 现在为止如果不是在代理环境下应该就直接可以开发git之旅了。eval $(ssh-agent) #一定要先执行这一句话否则会报出无法连接到agent server的错误 ssh-add XX # XX 刚刚生成的那个id_rsa文件的路径
但是,但是,总有那么几个特殊的情况让你纠结,我们就是不能使用22端口。
git -T git@github.com #奶奶的连不上啊,我去年买了个真皮包
现在请参考这么几篇篇博客
1.http://www.zeuux.com/blog/content/1226/ 按照他说的我是没有成功
2.https://github.com/jixiuf/org-mode-files/blob/master/git/git-proxy-on-windows.org 这是个大神啊,解决了我的http代理连接ssh的问题。
下面我附上我遇到的问题以及它的解决方案
- 每次启动shell时都要启动一个ssh-agent然后才能使用其中的私匙,可以放到bash的启动的脚本中
# start the ssh agent eval $(ssh-agent) # import ssh key RSA_PATH="/d/TortoiseGit/.ssh/rsa/" for file in `ls $RSA_PATH` do ssh-add $RSA_PATH"/"$file done
- “Warning: Permanently added to the list of known hosts” message from Git
这种情况就是没加入主机的信任列表,google一下吧。- 每次启动一个git-bash时都会新启动一个ssh-agent当启动多个时git-bash并且关闭之后ssh-agent会有多个进程仍然在运行着,下面附上解决方案:
trap "kill $SSH_AGENT_PID" #在启动ssh-agent后面加上这么一句,每次退出git-bash事,输入quit或者exit时就会把该shell启动的ssh-agent杀掉。
声明
博客尽量转载,我看到过好多复制黏贴的博客实在是错误多多,copy没什么技术含量,转载吧,只保留一份引用。另外吐槽一下“度娘”是在是太屎了,“谷歌”还是依然很强大!!