虚拟机中 /root/.ssh/config 的所有者或权限不正确

虚拟机中 /root/.ssh/config 的所有者或权限不正确

我使用 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 服务器的权限检查。这会导致这个答案不正确。我在这里留下我的答案,这样我们就不必再重复这个话题了。

我真的不想回答这个问题,但最终会有人发布你正在寻找的答案,并且可能附带适当的免责声明。

  1. 不要这样做。其他人都出于某种原因阻止你回答这个问题。这非常不安全。
  2. 不完全是。不要这样做。不管看起来多么方便,这都违背了 Unix 行业中一些最基本的安全惯例。如果你的同事发现你这样做了,即使只是在你自己的系统上随意这样做,你也会失去他们的尊重。
  3. 你要求被拥有。
  4. 如果您仍然决心坚持下去……

答案就在 中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 身份登录。但我认为,这不适用于开发虚拟机的情况。无论如何——这是一个题外话,因为它与我描述的问题无关。这个问题可能发生在每个用户组的每个用户身上。

相关内容