公司內外統一使用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 [email protected] #奶奶的連不上啊,我去年買了個真皮包
現在請參考這麼幾篇篇博客
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沒什麼技術含量,轉載吧,只保留一份引用。另外吐槽一下“度娘”是在是太屎了,“谷歌”還是依然很強大!!