我使用 VirtualBox VM,Debian 作为客户操作系统。为了在 Windows 主机和 Linux 客户系统之间共享 SSH 密钥,我已将文件夹定义~/.ssh
为共享文件夹。但现在我收到一条错误:
# git clone [email protected]:user/project.git
Cloning into project...
Bad owner or permissions on /root/.ssh/config
fatal: The remote end hung up unexpectedly
通常要解决这个问题只需要为 设置更严格的权限~/.ssh
。但在这种情况下这是不可能的,因为它是一个共享文件夹。
这个问题还有其他解决方案/解决方法吗?
谢谢
答案1
正确的解决方案是停止使用 root 来检出 git 存储库。为每个用户提供自己的帐户,并保持足够严格的权限以确保不会危及安全性。
另一种解决方案是使用基于 Web 的 git 服务器,而不是基于 SSH 的服务器。我从未使用过任何一种,因此无法为您提供太多建议。
答案2
免责声明:我现在相信这是 git 客户端而不是 ssh 服务器的权限检查。这会导致这个答案不正确。我在这里留下我的答案,这样我们就不必再重复这个话题了。
我真的不想回答这个问题,但最终会有人发布你正在寻找的答案,并且可能附带适当的免责声明。
- 不要这样做。其他人都出于某种原因阻止你回答这个问题。这非常不安全。
- 不完全是。不要这样做。不管看起来多么方便,这都违背了 Unix 行业中一些最基本的安全惯例。如果你的同事发现你这样做了,即使只是在你自己的系统上随意这样做,你也会失去他们的尊重。
- 你要求被拥有。
- 如果您仍然决心坚持下去……
答案就在 中man sshd_config
,你要找StrictModes
。它不能根据每个用户进行配置;这是非常慎重的。
答案3
一种解决方案是,允许您仍然拥有/root
“共享文件夹”,即AuthorizedKeysFile
在您的sshd_config
文件中使用它,并将其设置为从其他目录中提取您的授权密钥。
答案4
我已经用此命令挂载了我的共享文件夹(保存/etc/rc.local
以便在系统启动时自动挂载该文件夹):
mount -t vboxsf -o uid=1000,gid=1000 sshkeys /root/.ssh
现在我改变了用户, 这用户组,以及访问权在 mount commando 中挂载文件夹的路径:
mount -t vboxsf -o uid=0,gid=0,umask=077 sshkeys /root/.ssh
有用。
PS 对于参与本次讨论的每个人:
由于讨论得比较混乱,我简单总结一下:
最初我遇到的问题Bad owner or permissions...
是,当密钥来自共享文件夹时,我无法使用密钥(错误)。对我来说,推论是,有两种方法:(a)要么设置用户、组和文件夹的访问权限,以满足 SSH 客户端(?)的需求,要么(b)让它忽略其访问权限限制。由于我无法将chown
/chmod
应用于我的共享文件夹,并且认为不可能更改其访问权限,因此我认为 (b) 是解决问题的最后可能性——并更改了问题/标题。这是一个错误,我刚刚进行了更改。
关于安全性的讨论:我以 root 身份工作(在我的开发虚拟机上!),对于每个有安全意识的用户来说,这都是致命的错误。实际上,我也认为,通常不应该以 root 身份登录。但我认为,这不适用于开发虚拟机的情况。无论如何——这是一个题外话,因为它与我描述的问题无关。这个问题可能发生在每个用户组的每个用户身上。