Intereting Posts
Отправить зашифрованный файл (zip или txt) – через PHP – можно открыть на ПК с Windows Проблемы с кодировкой с помощью XMLWriter (PHP) превышено максимальное время выполнения программы phpseclib Как отправить массив данных с Android на php-сервер? Может ли PHP «писать» или «копировать» на удаленном удаленном ресурсе, но не «отключать» или «переименовывать» («Доступ запрещен») GET & Command – Неправильно Загрузка файла с помощью XMLHttprequest – Отсутствует граница в multipart / form-data Что такое 22527 в error_reporting 22527 из phpinfo Как я могу извлечь или распаковать gzip-файл, используя php? Сценарий Python, не выполняющийся с помощью PHP exec () Объектная копия против клона в PHP Как создать динамический заголовок страницы с помощью PHP Токены доступа к Facebook – аутентификация на стороне сервера Ведение всех значений дубликатов ключей при разборе файла .ini Масштабирование приложения чата – короткий опрос и длительный опрос (AJAX, PHP)

ssh2_exec не выполняет простую команду

У меня есть кошмар проблемы с ssh_exec() отказывающейся выполнять команду в Windows.
Вот мой код:

 <?php $connection = ssh2_connect('localhost', 22); ssh2_auth_none($connection, 'root'); $stream = ssh2_exec($connection, 'C:\Program Files\CCleaner\CCleaner.exe',FALSE); ?> 

Он показывает мне следующее предупреждение: Unable to request a channel from remote host in . Если у вас есть какие-либо советы, пожалуйста, дайте мне знать. Спасибо.

Во-первых, маловероятно, что вы сможете подключиться к вашему серверу Windows с помощью ssh2_connect , потому что SSH не является протоколом, обычно используемым для подключения к Windows, и не является доступным элементом в любой установке Windows. Во-вторых, убедитесь, что вы создали пользовательский «root» на сервере Windows, потому что он не будет существовать по умолчанию.

Альтернативно Если вы действительно подключаетесь к серверу Unix / Linux из окна Windows, то тот факт, что вы пытаетесь запустить на нем команду Windows ('C: \ Program Files \ CCleaner \ CCleaner.exe'), не будет выполнен. Вы можете выполнять только команды на удаленном сервере, и любая команда, начинающаяся с «C: \», будет, очевидно, терпеть неудачу, потому что у Linux есть совершенно другая структура файловой системы из Windows.

Таким образом, из вышеприведенного кода похоже, что вы, вероятно, пытаетесь подключиться к серверу Linux, используя имя пользователя «root» без пароля (который согласно руководству PHP.net ( ssh2_auth_none :

Попытка «нет» аутентификации, которая обычно будет (и должна) терпеть неудачу.

Но, как вы сказали, вы пытаетесь выполнить команду в Windows, и вы подключаетесь к серверу с именем хоста localhost, возможно, вы действительно используете это в Windows и просто пытаетесь использовать SSH для подключения к серверу Windows – что бессмысленно, поскольку приведенный выше код PHP уже выполняется на сервере Windows, что делает соединение SSH полностью избыточным, за исключением попытки выполнить команду с повышенными привилегиями (как «root»).

Если вы пытаетесь выполнить команду удаленно с помощью PHP в качестве пользователя-администратора , что, вероятно, является плохой идеей, то вы можете рассмотреть возможность использования команды function.exec.php в сочетании с командой Windows runas . Или вы можете просто запустить свой веб-сервер в качестве администратора, что очень легко сделать и очень плохо для безопасности .

Вы могли бы в основном добиться того, что вы пытаетесь сделать выше, установив SSH-сервер в Windows (для чего нужны хорошие SSH-серверы для Windows? ), После чего вам нужно будет войти на сервер с помощью пользователя, который существует, и использовать пароль для этого пользователя (или создать пользовательский «root» и использовать его). В зависимости от установки вашего SSH-сервера выполнение команды C:\Program Files\CCleaner\CCleaner.exe может работать так, как описано выше.

  • Есть ли команда «sudo» для Windows?
  • Как запустить PHP в качестве администратора

Есть примеры того, как это сделать в Linux, разные методы имеют разные преимущества и недостатки.

  • Выполнение команд root через PHP
  • Как запустить PHP exec () как root?
 <?php $connection = ssh2_connect('localhost', 22); ssh2_auth_none($connection, 'root'); $stream = ssh2_exec($connection, 'C:\Program Files\CCleaner\CCleaner.exe', false); stream_set_blocking ($stream, true);