系统范围内的已知主机文件?

系统范围内的已知主机文件?

我正在尝试做一个 github-git拉作为 www-data 用户从 php 脚本中获取“主机密钥验证失败”。我的主要用户已注册主机密钥,但我的 www-data 没有,因为它甚至无权访问 ~/.ssh 目录。

Ubuntu 18.04 下是否还存在系统范围的已知主机文件?我认为让 www-data 用户访问我的数据是不安全的〜/.ssh-目录?

答案1

正如 @GMaster 所建议的,使用 HTTPS 而不是 SSH 进行自动拉取似乎是最明智的选择。但是,如果您确实需要使用 ssh 协议(为什么?),您有一些处理选项known_hosts和凭据:

  • 在 的主目录中创建~/.ssh树,包括预先填充的known_hosts, www-data(在我的系统中是/var/www,但请在 中检查您的/etc/passwd)。您可以通过手动连接并验证主机密钥来自行创建该文件。只需确保此类文件和目录具有适当的权限(通常为 0700/0600)和所有权。

  • 将此文件放在其他地方(具有适当的权限),并使用指向它-o UserKnownHostsFile=/path/to/known_hosts

  • 对于上述两种方法,请尝试-o StrictHostKeyChecking各种选择并-o UpdateHostKeys在安全性和便利性之间取得平衡。

  • 作为最后的手段,您可以在/var/www/.ssh/config命令行选项中或使用命令行选项完全禁用 www-data 的主机密钥验证-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null。请注意这意味着严重的安全隐患。

并且,强化您已经怀疑的内容:在任何情况下都不要让 www-data(或任何其他)用户访问您的~/.ssh.记住你的私人的钥匙也在那里!

答案2

是的,确实有一个系统范围内已知的主机文件,默认情况下是/etc/ssh/ssh_known_hosts.您可以运行man ssh_config并搜索GlobalKnownHostsFile以查看系统上的默认值。-o如果您愿意,您还可以像往常一样更改此选项的值(使用)。

相关内容