Ben*_*man 243 git ssh cygwin openssh msysgit
最近我一直无法克隆或推送到github,我正试图找到根本原因.
这是在Windows上
我有cygwin + git以及msysgit.
使用以下选项安装Msysgit:
这给了我4个环境来尝试使用git:
不知何故,我设法让自己进入一个位置,当我尝试使用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
Run Code Online (Sandbox Code Playgroud)
这是在我的c:\ users\ben \文件夹中使用.ssh文件夹,这是msysgit使用的文件夹.我怀疑cygwin是可行的,因为.ssh文件夹位于其他地方,但我不知道为什么
在Git Bash中,我检查权限:
$ ls -l -a ~/.ssh
Run Code Online (Sandbox Code Playgroud)
这给了我:
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
Run Code Online (Sandbox Code Playgroud)
这些权限显然太宽松了.他们是如何得到这种方式的,我不知道.
我可以尝试改变它们......
$ chmod -v -R 600 ~/.ssh
Run Code Online (Sandbox Code Playgroud)
告诉我:
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-------)
Run Code Online (Sandbox Code Playgroud)
但似乎没有效果.我仍然得到同样的错误,并做
$ ls -l -a ~/.ssh
Run Code Online (Sandbox Code Playgroud)
产生与以前相同的权限.
更新:
我试着把cygwin的权限,以这些文件和Cygwin正确报告他们的权限,gitbash并不: 替代文字http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg
关于如何真正修复这些权限的任何想法?
Kob*_*oby 358
你改变了整个目录的权限,我同意Splash是一个坏主意.如果你能记住目录的原始权限是什么,我会尝试将它们设置回原来的权限,然后执行以下操作
cd ~/.ssh
chmod 700 id_rsa
Run Code Online (Sandbox Code Playgroud)
在.ssh文件夹中.这将仅为所有者(您)将id_rsa文件设置为rwx(读取,写入,执行),并为其他所有人设置零访问.
如果您不记得原始设置是什么,请添加新用户并为该用户创建一组SSH密钥,从而创建一个具有默认权限的新.ssh文件夹.您可以使用新的.ssh文件夹作为重置.ssh文件夹和文件的权限的参考.
如果这不起作用,我会尝试卸载msysgit,删除计算机上的所有.ssh文件夹(仅用于安全措施),然后用您想要的设置重新安装msysgit并尝试重新开始(尽管我认为你告诉我你已经尝试过这个了.
编辑:也刚刚通过谷歌找到这个链接 - 修复"警告:不受保护的私人密钥文件!" 在Linux上虽然它的目标是Linux,但它可能会有所帮助,因为我们正在谈论liunx权限等.
kit*_*kun 74
cygwin的chmod有一个bug,请参考:
https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected
chgrp -Rv Users ~/.ssh/*
chmod -vR 600 ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
Tun*_*ğlu 17
对于*nix系统,明显的解决方法是chmod 600 id_rsaofc,但是在Windows 7上我不得不将头撞到墙上一段时间,但后来我找到了神奇的解决方案:
转到我的电脑/右键单击/属性/高级系统设置/环境变量并删除变量(可能来自系统和用户环境):
CYGWIN
基本上,它是git windows binary使用的mingw32中的一个缺陷,看到所有文件644和所有文件夹755总是如此.删除环境变量不会改变该行为,但它似乎告诉ssh.exe忽略该问题.如果通过探险安全设置中设置适当的权限,您id_rsa(实在没有必要有任何其他用户那里不是你自己,而不是"人人",而不是"管理员",而不是"系统"没有.只是你) ,你仍然是安全的.
现在,为什么mingw32的,不同的系统的cygwin,将使任何使用Cygwin环境变量的,我是无法理解.对我来说看起来像个错误.
Ste*_*lay 13
我正在使用XP,这允许Git Bash与Github沟通(经过很多挫折):
c:\cygwin\bin\cyg*(~50个文件)到c:\Program Files\Git\bin\c:\cygwin\bin\ssh.exe到c:\Program Files\Git\bin\(覆盖)创建c:\Documents and Settings\<username>\.ssh\config包含的文件:
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)(可选)ssh -v git@github用于查看已调试的连接.
背景:一般问题是这两者的结合:
从属性更改文件权限,禁用继承和运行chmod 400对我来说不起作用.我的私钥文件的权限是:
-r - r ----- 1 alex无1766 3月8日13:04 /home/alex/.ssh/id_rsa
然后我注意到这个组是None,所以我就跑了
chown alex:管理员〜/ .ssh/id_rsa
然后我可以使用chmod 400成功更改权限,并运行git push.
小智 5
好的,所以这是我实际上如何在Windows文件上强制更改有关Win7本身的权限的方法:在Windows资源管理器中找到您的ssh密钥:C:\ Users [您的用户名_此处] .ssh \ id_rsa
右键单击文件>属性>安全性选项卡>高级按钮>更改权限
现在删除实际上不是您的用户名的所有人。这包括管理员和系统用户。此时,您可能会遇到有关继承权限的对话-选择不继承的选项-因为我们只想更改此文件。
单击确定并保存直到完成。
我为此战斗了几天,因为我的Windows不会从命令行更改文件权限。这样,它实际上也可以完成-而不是使用令人发指的变通办法。
| 归档时间: |
|
| 查看次数: |
255982 次 |
| 最近记录: |