我正在尝试从具有AFS安装的主目录的OS X计算机设置对gitolite管理的git服务器的访问。 AFS会忽略Unix权限,根据我对问题的理解,AFS中有一个OS X权限伪造修复程序,它将所有权限设置为666,以便Finder仍然可以在本地打开文件。
当您尝试对git服务器进行身份验证时,您将获得
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '$HOME/.ssh/id_dsa' are too open
因为ssh认为私钥太明显了(因为权限实际上是由AFS ACL管理的)。 chmod
对本地unix权限没有影响。
这是一个关于我发现的问题的Nabble线程没有多大帮助:
http://old.nabble.com/User-friendly-Mac-OS-X-patch-causes-SSH-hardship-tt8851573.html#a8851573
有没有人知道一项工作?反正有没有把.ssh的权限伪装成像700这样的东西?
答案 0 :(得分:0)
您可以尝试修改/ etc / ssh_config文件以使用指定的标识文件。插入这样的东西,也许:
Host <gitolite-server-host>
IdentityFile <identity-file-location> # this defaults to your ~/.ssh/id_rsa
User <gitolite-username>
答案 1 :(得分:0)
下面是6.6版OpenSSH ssh
实用程序的相关源代码。基本上,如果文件由运行ssh的用户拥有,则ssh要求密钥文件为模式0600(或更具限制性)。如果该文件由某个其他ID拥有,则它可以具有允许其被读取的任何权限。
因此,假设您可以使用属于其他帐户的密钥文件来解决此限制。我意识到这不是很有帮助。
如果有人具备必要的技能,那么更实际的解决方案是从portable source code构建ssh
的自定义版本。
if (fstat(fd, &st) < 0)
return 0;
/*
* if a key owned by the user is accessed, then we check the
* permissions of the file. if the key owned by a different user,
* then we don't care.
*/
#ifdef HAVE_CYGWIN
if (check_ntsec(filename))
#endif
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("@ WARNING: UNPROTECTED PRIVATE KEY FILE! @");
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("Permissions 0%3.3o for '%s' are too open.",
(u_int)st.st_mode & 0777, filename);
error("It is required that your private key files are NOT accessible by others.");
error("This private key will be ignored.");
return 0;
}
return 1;