PHP scp файл с удаленного сервера

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

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

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

0

Решение

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

scp someusername@remote:file dir

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


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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]