[英]ssh2_exec not executing simple command
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
.
首先,您不太可能使用ssh2_connect
連接到 Windows 服務器,因為 SSH 不是通常用於連接到 Windows 的協議,也不是任何 Windows 安裝中的可用項目。 其次,確保您已經在 Windows 服務器上創建了用戶“root”,因為默認情況下它不存在。
或者,如果您實際上是從Windows 機器連接到 Unix/Linux 服務器,那么您嘗試在其上運行 Windows 命令('C:\Program Files\CCleaner\CCleaner.exe')的事實將失敗。 您只能在存在的遠程服務器上執行命令,任何以“C:\”開頭的命令顯然都會失敗,因為 Linux 具有與 Windows 完全不同的文件系統結構。
因此,從上面的代碼看來,您可能正在嘗試使用用戶名“root”連接到 Linux 服務器而沒有密碼(根據 PHP.net 手冊( ssh2_auth_none :
嘗試通常會(並且應該)失敗的“無”身份驗證。
但是正如您所說,您正在嘗試在 Windows 中執行命令,並且您正在使用主機名“localhost”連接到服務器 - 也許您實際上是在 Windows 上運行它,並且只是嘗試使用 SSH 連接到 Windows 服務器- 這是沒有意義的,因為上面顯示的 PHP 代碼已經在 Windows 服務器上執行,這使得 SSH 連接完全多余,除非嘗試以提升的權限(作為“root”)執行命令。
如果您嘗試以管理員用戶身份使用 PHP 遠程執行命令,這可能是個壞主意,那么您可以考慮將function.exec.php
命令與 Windows runas 命令結合使用。 或者您可以只以管理員身份運行您的 Web 服務器,這既容易做到又對安全性非常不利。
通過在 Windows 上安裝 SSH 服務器(Windows 有哪些好的 SSH 服務器? ),您基本上可以實現上述目標 - 之后您必須使用現有用戶登錄服務器,並使用該用戶的密碼(或創建用戶“root”並使用它)。 根據您的 SSH 服務器安裝,運行命令C:\Program Files\CCleaner\CCleaner.exe
可以按照上述方式工作。
在 Linux 中有更多的例子來說明如何做到這一點,不同的方法有不同的優點和缺點。
<?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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.