Мне нужно было найти способ сделать это некоторое время назад, чтобы создать собственную панель управления для внутреннего сервера веб-разработки, и я много раз осмотрелся и обнаружил, что есть пакет SSH для PHP, который обычно поставляется с ssh вЭто.Возможно, вы захотите попробовать это:)
Вам потребуется сгенерировать ключ на своем сервере, чтобы ваш сервер мог подключиться к цели без пароля, для этого:
ssh-keygen -t rsa
ssh-copy-id root@targetmachine
Поиск в сети для получения дополнительной информации о генерации ключа RSA, в сети есть тонны.А затем просто сделайте небольшую функцию, подобную этой, и вы готовы выполнить множество команд:)
<?php
/**
*
* Runs several SSH2 commands on the devl server as root
*
*/
function ssh2Run(array $commands){
$connection = ssh2_connect('localhost');
$hostkey = ssh2_fingerprint($connection);
ssh2_auth_pubkey_file($connection, 'root', '/home/youruser/.ssh/id_rsa.pub', '/home/youruser/.ssh/id_rsa');
$log = array();
foreach($commands as $command){
// Run a command that will probably write to stderr (unless you have a folder named /hom)
$log[] = 'Sending command: '.$command;
$log[] = '--------------------------------------------------------';
$stream = ssh2_exec($connection, $command);
$errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
// Enable blocking for both streams
stream_set_blocking($errorStream, true);
stream_set_blocking($stream, true);
// Whichever of the two below commands is listed first will receive its appropriate output. The second command receives nothing
$log[] = 'Output of command:';
$log[] = stream_get_contents($stream);
$log[] = '--------------------------------------------------------';
$error = stream_get_contents($errorStream);
if(strlen($error) > 0){
$log[] = 'Error occured:';
$log[] = $error;
$log[] = '------------------------------------------------';
}
// Close the streams
fclose($errorStream);
fclose($stream);
}
//Return the log
return $log;
}
Кроме того, вас могут заинтересовать документы по SSH2 для php: http://ca3.php.net/manual/fr/book.ssh2.php