最近我一直无法克隆或推送到github,我试图找到根本原因。
这是在窗口上
我有cygwin + git以及msysgit。
安装Msysgit的选项如下:
OpenSSH
从Windows命令提示符中使用Git
这给了我4个环境来尝试使用git:
Windows cmd提示符
Powershell
Git Bash
Cygwin
不知怎的,我已经设法让自己进入一个位置,当我尝试使用msysgit, cmd.exe或Powershell克隆一个存储库时,我得到以下错误:
> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.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:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly
这是使用我的c:\users\ben\文件夹中的.ssh文件夹,这是msysgit使用的文件夹。我怀疑cygwin工作,因为.ssh文件夹位于其他地方,但我不确定为什么
在Git Bash中,我检查权限:
$ ls -l -a ~/.ssh
这给了我:
drwxr-xr-x 2 Ben Administ 0 Oct 12 13:09 .
drwxr-xr-x 34 Ben Administ 8192 Oct 12 13:15 ..
-rw-r--r-- 1 Ben Administ 1743 Oct 12 12:36 id_rsa
-rw-r--r-- 1 Ben Administ 399 Oct 12 12:36 id_rsa.pub
-rw-r--r-- 1 Ben Administ 407 Oct 12 13:09 known_hosts
这些许可显然太宽松了。我不知道他们是怎么变成这样的。
我可以试着改变他们……
$ chmod -v -R 600 ~/.ssh
这告诉我:
mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)
但这似乎没有效果。我还是得到同样的错误
$ ls -l -a ~/.ssh
产生与以前相同的权限。
更新:
我试图修复这些文件的权限在cygwin,和cygwin报告他们的权限正确,gitbash没有:
Alt文本http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg
关于如何真正修复这些权限,有什么想法吗?
你改变了整个目录的权限,我同意Splash是一个坏主意。如果您还记得该目录的原始权限是什么,我将尝试将它们设置回原来的权限,然后执行以下操作
cd ~/.ssh
chmod 700 id_rsa
在.ssh文件夹中。这将只对所有者(您)将id_rsa文件设置为rwx(读、写、执行),而对其他所有人都没有访问权。
如果您不记得原始设置是什么,可以添加一个新用户并为该用户创建一组SSH密钥,从而创建一个新的. SSH文件夹,该文件夹将具有默认权限。您可以使用新的.ssh文件夹作为权限的参考,以便将.ssh文件夹和文件重置为。
如果这不起作用,我会尝试卸载msysgit,删除计算机上的所有.ssh文件夹(只是为了安全起见),然后重新安装msysgit,并尝试完全重新开始(尽管我认为你告诉我你已经尝试过了)。
编辑:也刚刚发现这个链接通过谷歌-修复“警告:未保护的私钥文件!”在Linux上虽然它是针对Linux,它可能有帮助,因为我们正在谈论Linux权限等。
我现在正在使用Git 1.6.5,我无法复制您的设置:
Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x 2 Administ Administ 4096 Oct 13 22:04 ./
drwxr-xr-x 6 Administ Administ 4096 Oct 6 21:36 ../
-rw-r--r-- 1 Administ Administ 0 Oct 13 22:04 c.txt
-rw-r--r-- 1 Administ Administ 403 Sep 30 22:36 config_disabled
-rw-r--r-- 1 Administ Administ 887 Aug 30 16:33 id_rsa
-rw-r--r-- 1 Administ Administ 226 Aug 30 16:34 id_rsa.pub
-rw-r--r-- 1 Administ Administ 843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r-- 1 Administ Administ 294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r-- 1 Administ Administ 1626 Sep 30 22:49 known_hosts
Administrator@WS2008 /k/git
$ git clone git@github.com:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.
Administrator@WS2008 /k/git
$ ssh git@github.com
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.
$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
Chmod也不修改我的密钥的文件权限。
环境:
NTFS上的Windows Server 2008 SP2
用户:管理员
环境var:
PLINK_PROTOCOL = ssh
= / c / profiles /家
更新:Git 1.6.5.1也可以工作。
我在Windows 10上也遇到了同样的问题,我试图SSH进入一个Vagrant盒子。这似乎是旧OpenSSH版本中的一个bug。对我有用的是:
从http://www.mls-software.com/opensshd.html安装最新的OpenSSH
where.exe ssh
(如果使用Powershell,请注意“。exe”)
你可能会看到如下内容:
C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe
注意,在上面的示例中,最新的OpenSSH位于路径的第二个位置,因此不会执行。
更改顺序:
右键单击Windows按钮->设置->“编辑系统环境变量”
在“高级”选项卡上单击“环境变量…”
在“系统变量”下编辑“路径”。
选择“C:\Program Files\OpenSSH\bin”并“向上移动”,使其出现在顶部。
单击OK
重新启动控制台,以便应用新的环境变量。
我的系统有点混乱的bash/cygwin/git/msysgit/也许-更多…
Chmod对密钥或配置文件没有影响。
然后我决定从Windows操作系统入手,这是可行的。
Right-Click the file whose permission needs fixing.
Select Properties.
Select the Security tab.
Click Advanced near the bottom.
Click Change, next to Owner near the top.
Type "My-Awesome-Username" (obviously change that to your current Windows username), and click Check Names, then OK.
Under Permission entries:, highlight each user that isn't "My-Awesome-Username", and select Remove. Repeat this until "My-Awesome-Username" is the only one left.
Select "My-Awesome-Username", and click Edit below.
Make sure the Type: at the top is set to Allow, and then tick the checkbox next to Full control.
Hit OK, Apply, OK, OK.
Give it another try now...
似乎有时候mock-bash不能控制文件的所有权。它特别奇怪,因为它是从模拟bash脚本生成的。图。