我在PHP rsh
命令中使用exec()
时遇到问题。我得到的错误是:Could not create directory '/nonexistent/.ssh'
。
这似乎是因为Apache以没有主目录的用户nobody
运行,因此无法找到/创建.ssh目录。我在终端上做的事情类似于:
sudo su - user_with_home_directory
/usr/bin/rsh -n -l username myserver.com /path/to/my/script.sh
但我不知道如何使用PHP的exec()
命令执行此操作。我不想(并且不能)给nobody用户一个主目录,只是为了让问题消失。
非常感谢任何帮助,帮助我弄清楚如何让它发挥作用。
答案 0 :(得分:1)
因此,我正在使用的服务器上的rsh
似乎是启用了Kerberos,而后者又使用SSH进行身份验证。这是导致搜索.ssh
目录的原因。
为了解决这个问题,我创建了一个SSH密钥,并将其存储在文件系统中除.ssh
目录以外的其他位置,再次阻止为nobody
用户创建主目录。然后使用SSH,我指定了-i
选项,该选项指向我生成的SSH密钥,允许我远程执行脚本而无需使用密码登录。