我正在尝试做一个 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
如果您愿意,您还可以像往常一样更改此选项的值(使用)。