一个有趣的问题。
更广泛的目标是设置一个目录,我们的客户之一可以通过 sftp 进入该目录(通过 ssh 密钥,而不是用户/密码组合)并上传文件。该目录需要由另一个运行 crons 的 cPanel 用户(称为 user1)访问,该 crons 依次运行 php 脚本来处理这些文件并对其进行操作(读取,可能还移动)。
我已经设置了一个新用户(称为 user2),其主目录位于 user1 的子目录中。我可以sftp
使用用户名/密码组合进入 user2 的主目录。但我现在无法使用 ssh 密钥进行连接。我已经~/.ssh/authorized_keys
为 user2 设置了文件和所有内容。据我了解,问题是由于文件所有权造成的。由于 user2 没有明确拥有其中的文件,因此~/.ssh
它拒绝查看该文件,因此拒绝密钥。
有没有人有任何经验、意见或建议来解决这个问题。即使我最初的解决方案不可行,我也必须走另一条路。
答案1
您实际上可以单击ssh
添加到问题中的标签,它会给您一个查看更多信息的选项。你会看到一个标签维基页面该网站的用户撰写了有关 SSH 的文章。您想要的答案位于标签 wiki 的故障排除部分,并且也包含在这次讨论。
简而言之,这是 SSH 的默认行为。当您在 USER1 的另一个主目录中为 USER2 创建一个嵌套主目录时,您必须授予 USER2 对 USER1 主目录的读写权限。
SSH 通过在 $HOME/.ssh 上强制执行 rwx------ 并确保只有所有者对 $HOME 具有写入权限来保护用户密钥。如果相应所有者以外的用户对 $HOME 目录具有写入权限,他们可能会恶意修改 $HOME/.ssh 上的权限,从而可能劫持用户密钥、known_hosts 或类似内容。总之,$HOME 上的以下权限足以让 SSH 工作。
- 读写x-----
- rwxr-x---
- rwxr-xr-x
如果 $HOME 目录中存在 g+w 或 o+w 的任何变体,SSH 将无法正常工作,并将向日志工具发送警告。但是,管理员可以通过StrictModes no
在 sshd_config(或类似)配置文件中进行定义来覆盖此行为,但应该明确的是,不建议这样做。