【发布时间】:2019-01-31 17:40:07
【问题描述】:
如何从 PHP 脚本 scp 远程服务器上的文件?
我尝试了shell_exec("scp remote:file dir"),但这不起作用,因为用户apaache 在远程服务器上没有关联的shell,因此不能执行ssh。
我尝试创建一个Copy.sh setuid 脚本,该脚本创建为user1 并使用shell_exec("Copy.sh file dir")。然而,当 Copy.sh 执行时,Apache 服务器(或 PHP?)并没有改变 uid,尽管有 setuid 标志。
这篇文章
https://serverfault.com/questions/7589/how-do-you-run-a-php-script-as-the-files-owner-rather-than-as-the-webserver-us
安装suPHP 的建议,我似乎没有安装。这是要走的路吗?我已经安装了mod_suexec,但是这个模块似乎只能更改 PHP 脚本本身的 uid。它可以(ab)用来做我想做的事吗?
也许有一种方法可以将user1 的 ssh 密钥提供给 PHP 脚本,以便它可以进行复制?
【问题讨论】:
-
你可以指定远程用户进行连接,如果没有指定它使用你当前的用户:
scp someusername@remote:file dir -
试过了,但没有进一步调试,因为我认为用户
apache不能只使用用户someusername的密钥。 -
是的,但是您可以将 Apache 用户的 PubKey 添加到远程
someusername的authorized_keys文件中。 -
啊,我太笨了。在您的帮助下,它开始工作了。但是由于我不明白的原因,我不能做
scp user1@remote:file dir,但不得不做ssh user1@remote scp file local:dir -
解释比较简单。对于
ssh命令,我还使用了-o StrictHostKeyChecking=no选项来让它工作。将此添加到scp也可以。