Во-первых, маловероятно, что вы сможете подключиться к серверу 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:
Попытаться выполнить аутентификацию "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
может работать так, как вы описали выше.
Есть больше примеров того, как это сделать в Linux, разные методы имеют разные преимущества и недостатки.
person
StampyCode
schedule
07.10.2015
if (! $connection) { die("Connection failed."); }
- person Quentin Skousen   schedule 02.10.2015