PHP scp файл с удаленного сервера - PullRequest
0 голосов
/ 25 августа 2018

Как мне из скрипта PHP scp файл с удаленного сервера?

Я пробовал shell_exec("scp remote:file dir"), но это не работает, потому что пользователь apaache не имеет оболочки, связанной с удаленным сервером, и поэтому не может выполнить ssh.

Я пыталсясоздайте Copy.sh сценарий setuid, созданный как user1 и используйте shell_exec("Copy.sh file dir").Однако сервер Apache (или PHP?) Не меняет uid, когда Copy.sh выполняется несмотря на флаг 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, но, похоже, этот модуль может изменять только uid самого скрипта PHP.Может ли он (ab) использоваться для того, что я хочу?

Возможно, есть способ предоставить ssh-ключи user1 для сценария PHP, чтобы он мог сделать копию?

1 Ответ

0 голосов
/ 26 августа 2018

Вы можете указать в scp, какой удаленный пользователь должен использоваться для подключения:

scp someusername@remote:file dir

Если вы хотите запустить его как Apache-пользователь, вам нужно будет добавить PubKey of Apache вauthorized_keys файл someusername на удаленном компьютере.


Если пользователь Apache никогда ранее не подключался к удаленному компьютеру через SSH, он может не доверять HostKey.Вы должны добавить его в файл known_hosts пользователя, например, интерактивно (в оболочке) подключиться к удаленному пользователю Apache и ввести yes, когда его спросят.Или отключите проверки, используя StrictHostKeyChecking=no, однако это имеет последствия для безопасности.

...