Angular, AWS und Symfony Freelancer

SSH Verbindung mit PHP

Um eine SSH Verbindung mit PHP zu erstellen, gibt es mehrere Möglichkeiten:

Die saubere Lösung: Verbinden mit PHP-SSH2

Dazu muss die das Package php-ssh2 installiert werden, siehe php.net.

    $connection = ssh2_connect($host, $port);
    if(ssh2_auth_password($connection, $user, $password)){
        $stream = ssh2_exec($connection, $command);
        stream_set_blocking($stream, false);
        $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
        $result = stream_get_contents($stream_out);
    }

Quick and dirty: Verbinden mit exec()

Einfach über die Console des Betriebsystems (sshpass sollte installiert werden, damit das Passwort mitangegeben werden kann).

$command = 'sshpass -p "'
    . $password
    . '" ssh -p '.$port.' '
    . $user. '@'. $host. ' "'
    . $sshCommand.'" ';
$result = exec($command);

Fingerprint umgehen bei wechselnden Ports

$command = 'sshpass -p "'
    . $password
    . '" ssh -p '.$port.' -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no '    
    . $user. '@'. $host. ' "'
    . $sshCommand.'" ';
$result = exec($command);

In dem Beispiel wird mittels der Parameter

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

die Fingerprint-Validierung umgangen, was man im Livebetrieb nicht machen sollten, bzw. man sollte sich den Fingerprint vorher auf der Console der Servers besorgen und dann benötigt man diese Parameter nicht.

 


Posted

in

by

Tags:

Comments

Ein Kommentar zu „SSH Verbindung mit PHP“

  1. Avatar von christoph
    christoph

    Hi, wie installiert man die Library mit Ubuntu und xampp?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert