Twitter Facebook RSS

Accueil > GNU/Linux, Développement > Faire du SSH via PHP

03
février

Faire du SSH via PHP

Dans le cadre d'un développement Web, vous avez besoin de vous connecter et de réaliser certaines actions sur un autre serveur. L'ennui, c'est que ce serveur est accessible uniquement en SSH.

Pas de problème, on peut faire du SSH en PHP ! Avec la librairie PHP "SSH2", on va se connecter à un serveur, envoyer des commandes SSH, et même afficher ce qu'il nous renvoie ! Installez 3 paquets, et relancez le serveur Apache :

apt-get install libssh2-1 libssh2-1-dev libssh2-php
/etc/init.d/apache2 reload

Pour tester que SSH2 est bien installé, faites un php -m |grep ssh2. Si la console vous affiche bien "SSH2", c'est que la librairie est bien installée !

Le code PHP :

Voici une fonction PHP vous permettant d'envoyer une commande SSH :

function ssh($host, $login, $mdp, $command)
{
    if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
    if(!($con = ssh2_connect($host, 22))){
        echo "échec connexion\n";
    } else {
        if(!ssh2_auth_password($con, $login, $mdp)) {
            echo "échec authentification\n";
        } else {
            // execute a command
            if (!($stream = ssh2_exec($con, $command ))) {
                echo "échec de l'exécution de la commande\n";
            } else {
                // collect returning data from command
                stream_set_blocking($stream, true);
                $data = "";
                while ($buf = fread($stream,4096)) {
                    $data .= $buf;
                }
                fclose($stream);
                return $data;
            }
        }
    }
}

Elle s'utilise comme cela :

$command = 'ls -alh /tmp';
$ret = ssh('monserveur', 'utilisateur', 'monmotdepassesecurise', $command);
echo '<pre>' . $ret . '</pre>';

Utilisez la variable $ret pour afficher ce que renvoie la commande SSH :) .

Si vous souhaitez passer plusieurs commandes dans la même instance SSH, utilisez le ";" comme séparateur. Les commandes seront alors exécutées à la suite :

ls -alh /tmp/; touch /tmp/truc

Twitter  Facebook  Imprimer

Écrire un commentaire :

Écrire un commentaire :




Vérification anti-spam - Quelle est la deuxième lettre du mot lwely ? : 

^ Retourner en haut