先前公司那边搭建了git仓库,我们写的代码就放在上面.用cygwin这套工具(里面包含了ssh-keygen用来生成ssh私钥和公钥证书,git用来下载和同步源码)来保证在windows上一样能用git.至于网上上的那个git windows版,就没去使用了.
下午走的时候,因为公司同事先前同步了自己的代码到git上,我这边同步时候因为代码有冲突,所以先没去同步,对git使用还不熟悉,就先把cygwin里面自己主目录下的.ssh文件夹(就是这个文件夹,里面保存了自己的私钥,公钥,信任主机文件)整个压缩备份出来,打算晚上回去在自己电脑上再处理代码的事.
回来后,在自己电脑上安装了cygwin,把先前备份出来的.ssh文件夹放到cygwin中的自己的主目录下,这个git clone从公司代码仓库中去取源码,结果出现了如下报错(部分内容涉及到隐私,我用5个星号代替了):
$ git clone git@*****.git
Cloning into *****...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0750 for '/home/leipei/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/leipei/.ssh/id_rsa
git@*****'s password:
Connection closed by *****
fatal: The remote end hung up unexpectedly
首先是提示我自己的私钥的权限开放的太高,750. 然后又提示我输入远程git仓库连接密码,实际上先前连接git是不需要密码的,直接提供自己的私钥文件就行了.这回搞的人莫名其妙.我就没输入密码了,结果这次连接就被远程主机关掉了.
第一直觉是.ssh文件夹里面的内容备份的有问题,文件损坏了.不过仔细看了下出错提示,是私钥文件的权限问题啊.去看了下权限:
$ ls -l
总用量 6
-rwxr-x--- 1 leipei None 1679 九月 16 19:03 id_rsa
-rwxr-x--- 1 leipei None 401 九月 16 19:03 id_rsa.pub
-rwxr-x--- 1 leipei None 396 九月 16 19:03 known_hosts
id_rsa文件(我的私钥文件)的权限确实是先前提示的750.这时候改了下权限:
chmod 700 id_rsa
然后又不放心,把公钥文件的权限用chmod改成了740.再去访问git仓库,呵呵,这回就直接能从远程把代码clone到本地了:
$ git clone git@*****.git
Cloning into mbook-reader-android...
remote: Counting objects: 50, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 50 (delta 5), reused 0 (delta 0)Receiving objects 92%
Receiving objects: 100% (50/50), 14.49 KiB, done.
Resolving deltas: 100% (5/5), done.