SSH-соединение с использованием PHP
В моем VPN есть удаленный сервер и удаленный маршрутизатор (который работает под управлением RouterOS с API и поддерживает ssh-соединения). Я хочу написать сценарий php и развернуть его на сервере, чтобы он подключался к удаленному маршрутизатору с использованием IP-адреса и учетных данных для входа в систему, а затем выполнял некоторые команды.
Я прочитал в Интернете, что есть решение для библиотеки libssh2.php, но я не могу понять, как установить / использовать или даже проверить, работает ли она на сервере. Сервер работает CentOS.
Заранее спасибо!!!
2 ответа
Я делал это раньше и просто использовал команду SSH напрямую. Например:
$sshCmd = "ssh user@1.2.3.45 \"ls -la ~\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);
Если у вас есть более сложные скрипты для запуска, вы можете затем поместить их в.sh скрипт и запустить затем через bash:
$sshCmd = "ssh user@1.2.3.45 'bash -s' < \"/path/to/script.sh\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);
Я думаю, что вам лучше всего использовать phpseclib, чистую реализацию PHP SSH. Он имеет ряд преимуществ перед libssh2:
http://phpseclib.sourceforge.net/ssh/compare.html
Вот пример:
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>