来自远程服务器的PHP scp文件

来自远程服务器的PHP scp文件,php,scp,setuid,suphp,Php,Scp,Setuid,Suphp,如何从PHP脚本scp中从远程服务器获取文件 我尝试了shell\u exec(“scp remote:file dir”),但这不起作用,因为用户apaache在远程服务器上没有关联的shell,因此无法执行ssh 我试图创建一个Copy.shsetuid脚本,创建为user1,并使用shell\u exec(“Copy.sh file dir”)。但是,尽管有setuid标志,当执行Copy.sh时,Apache服务器(或PHP?)不会更改uid 本文 建议安装suPHP,我似乎还没有安装。

如何从PHP脚本scp中从远程服务器获取文件

我尝试了
shell\u exec(“scp remote:file dir”)
,但这不起作用,因为用户
apaache
在远程服务器上没有关联的shell,因此无法执行ssh

我试图创建一个
Copy.sh
setuid脚本,创建为
user1
,并使用
shell\u exec(“Copy.sh file dir”)
。但是,尽管有setuid标志,当执行
Copy.sh
时,Apache服务器(或PHP?)不会更改uid

本文 建议安装
suPHP
,我似乎还没有安装。这是路吗?我已经安装了
mod_suexec
,但是这个模块似乎只能更改PHP脚本本身的uid。它能被用来做我想做的事吗


也许有一种方法可以将
user1
的ssh密钥提供给PHP脚本,以便它可以进行复制?

您可以在
scp
中指定应该使用哪个远程用户进行连接:

scp someusername@remote:file dir
如果您想以Apache用户身份运行此程序,则需要将Apache的PubKey添加到远程服务器上
someusername
authorized_-keys
文件中



如果Apache用户以前从未通过SSH连接到远程,则可能不信任HostKey。您应该将其添加到用户的
known_hosts
文件中,例如通过交互方式(在shell中)以Apache用户身份连接到remote,并在询问时键入
yes
。或者使用
StrictHostKeyChecking=no
禁用检查,但是这会带来安全隐患。

您可以指定要连接的远程用户,只有在未指定的情况下,它才使用您的当前用户:
scpsomeusername@remote:file dir
确实尝试过,但是没有进一步调试,因为我认为用户
apache
不能只使用user
someusername
的密钥。是的,但是你可以将apache用户的公钥添加到远程
someusername
授权密钥文件中。啊,我太傻了。在你的帮助下,它开始工作了。然而,由于我不明白的原因,我不能做
scpuser1@remote:file dir
但必须执行
sshuser1@remotescp文件本地:dir
解释更简单。对于
ssh
命令,我还使用了选项
-o strichostkeychecking=no
使其工作。将此添加到
scp
中也可以使用。