PHP shell exec запускает shellscript с помощью ssh
У меня есть shellscript с подключением к другой машине с ssh и ключом, поэтому ему не нужны имя пользователя и пароль.
Когда я запускаю этот скрипт из командной строки, он работает нормально.. но когда я запускаю этот скрипт с php shell_exec, он не работает.
Если я установлю ssh-соединение с PHP и запущу скрипт от имени своего пользователя, это сработает.
Теперь мой вопрос: D
Есть ли способ просто запустить скрипт в shell_exec
с php без установления соединения через ssh как другой пользователь?
3 answers
Правильно ли вы указали файл закрытого ключа?
Если вы используете Ubuntu или Debian, веб-сервер работает с именем пользователя www-данные . Для других систем, пожалуйста, проверьте конфигурацию веб-сервера на наличие имени пользователя. Вы можете просто проверить, может ли этот пользователь (и ваше веб-приложение php) подключиться по SSH.
1) Станьте пользователем вашего веб-сервера
sudo su www-data
2) Попробуйте подключить удаленный хост
ssh remoteUser@remoteHost
Если вы подключитесь без ввода пароля, должна возникнуть другая проблема. Если вы должны ввести пароль, файлы ключей были сохранены для другого пользователя, а не для www-данных. Вы уже настроили SSH для использования ключа. Сделайте то же самое для вашего локального пользователя www-данные , и это сработает.
Похоже, ssh-соединение не работает с shell_exec
. Если я запущу shellscript
в разделе ssh2_exec
, это, похоже, сработает.
Что немного странно, так как ssh-соединение выполняется в файле сценария с открытым и закрытым ключами.. Я бы предположил, что это будет просто выполняться: s
Веб-серверу разрешено выполнять файл, так как там есть другие команды, которые работают должным образом.