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

PHP scp file from remote server

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

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

我尝试创建一个 Copy.sh setuid 脚本,创建为 user1 并使用 shell_exec("Copy.sh file dir")。然而,Apache 服务器(或 PHP?)在执行 Copy.sh 时没有更改 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 中指定应该使用哪个远程用户进行连接:

scp someusername@remote:file dir

如果您想 运行 作为 Apache 用户,您需要将 Apache 的 PubKey 添加到远程 someusernameauthorized_keys 文件中。


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