linux — SSH2 на удаленную машину через веб-страницу (html и php)

Я пытаюсь подключиться к удаленной машине Linux через веб-страницу, отправить команду и просмотреть ее вывод на самой веб-странице.

Это то, что я сделал до сих пор (после каждого шага я повторяю текст, просто чтобы я мог понять, где код может достичь)

Код доходит до «2. phpseclib включил \ n», если его исключить с веб-страницы

если я запускаю этот код на терминале, он достигает конца!

<html>
<body>

TEST <br/>

<?php

echo "1. start\n";
define('NET_SSH2_LOGGING', 2);

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib1.0.0');
include('Net/SSH2.php');


echo "2. phpseclib included\n";
$ssh = new Net_SSH2('HOSTNAME');
echo "3. after Net_SSH2\n";

if (!$ssh->login("USERNAME", "PASSWORD")) {
echo "4. login failed";
exit('Login Failed');
} else {
echo "4. login gained\n";
}

echo "5. after login\n";


if (!($stream = $ssh->exec("ls"))) {
echo "fail: unable to execute command\n";
} else {
echo $stream;
}

if (!($stream = $ssh->exec("> foo.txt"))) {
echo "fail: unable to execute command\n";
} else {
echo $stream;
}

echo $ssh->getLog();
echo "6. end of code\n";
?>


</body>
</html>

Таким образом, кажется, что он перестает отображать сообщения после подключения к удаленному компьютеру?

Я начинаю размышлять, если это действительно возможно сделать? или нет из-за проблем безопасности?

Я установил библиотеку SSH2 отсюда: http://phpseclib.sourceforge.net/

Кроме того, я использовал тот же код, но вместо использования include я использовал require:

<html>
<body>

TEST <br/>

<?php

echo "1. start\n";
define('NET_SSH2_LOGGING', 2);

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib1.0.0');
require('Net/SSH2.php');

echo "2. phpseclib included\n";
$ssh = new Net_SSH2('HOST');
echo "3. after Net_SSH2\n";

if (!$ssh->login("USERNAME", "PASSWORD")) {
echo "4. login failed";
exit('Login Failed');
} else {
echo "4. login gained\n";
}

echo "5. after login\n";


if (!($stream = $ssh->exec("ls"))) {
echo "fail: unable to execute command\n";
} else {
echo $stream;
}

if (!($stream = $ssh->exec("> foo.txt"))) {
echo "fail: unable to execute command\n";
} else {
echo $stream;
}

echo $ssh->getLog();
echo "6. end of code\n";
?>


</body>
</html>

РЕШИТЬ:
Устанавливая библиотеку через PEAR

-1

Решение

Эта линия является проблемой

set_include_path (get_include_path (). get_include_path (). ‘/ phpseclib’);

Здесь есть две проблемы, первая из которых упоминается в комментариях: вы пытаетесь загрузить вещи из «/ your / include / path / your / include / path / phpseclib» вместо «/ your / include / path / phpseclib»

Если вы установили phpseclib по пути включения, вам нужно просто удалить один из get_include_path, и вы сможете продолжить работу с вашим кодом. Также, чтобы прочитать комментарии.

1

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

Могу поспорить, если вы изменили include к require это не будет так далеко, как вы в настоящее время.

И я думаю set_include_path(get_include_path() . get_include_path().'/phpseclib'); это твоя проблема.

Попробуй это:

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib1.0.0');
include('Net/SSH2.php');
1

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