1

如何从 PHP 脚本 scp 来自远程服务器的文件?

我已经尝试过shell_exec("scp remote:file dir"),但这不起作用,因为用户apaache在远程服务器上没有关联的 shell,因此不能执行 ssh。

我试图创建一个Copy.shsetuid 脚本,创建为user1并使用shell_exec("Copy.sh file dir"). Copy.sh然而,尽管有 setuid 标志,Apache 服务器(或 PHP?)在执行时并未更改 uid 。

本文 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为 PHP 脚本提供 ssh 密钥,所以它可以进行复制?

4

1 回答 1

2

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

scp someusername@remote:file dir

如果您想以 Apache 用户身份运行它,您需要将 Apache 的 PubKey 添加到远程authorized_keys文件中someusername


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

于 2018-08-26T08:32:51.783 回答