在PHP中使用exec()执行RSH命令

时间:2011-08-01 14:53:35

标签: php rsh

我在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用户一个主目录,只是为了让问题消失。

非常感谢任何帮助,帮助我弄清楚如何让它发挥作用。

1 个答案:

答案 0 :(得分:1)

因此,我正在使用的服务器上的rsh似乎是启用了Kerberos,而后者又使用SSH进行身份验证。这是导致搜索.ssh目录的原因。

为了解决这个问题,我创建了一个SSH密钥,并将其存储在文件系统中除.ssh目录以外的其他位置,再次阻止为nobody用户创建主目录。然后使用SSH,我指定了-i选项,该选项指向我生成的SSH密钥,允许我远程执行脚本而无需使用密码登录。