Noobis.de - Wir helfen weiter !


Banner Picture
SSH mittels PHP5 (Debian) PDF Drucken E-Mail
Benutzerbewertung: / 0
SchwachPerfekt 
Tutorial Übersicht - Developer Tutorials
Montag, 02. Mai 2011 um 11:33
Manchmal ist es erforderlich, dass mittels WebFrontend, welches in PHP5 entstanden ist SSH Befehle an den Server zu schicken.

Ich möchte hierbei noch mal darauf hinweisen, dass es bei fehlerhaftem Einsatz (Beispielsweise Befehle per User root) zu einer erheblichen Sicherheitslücke kommen kann!


1. Installation der benötigen Pakete: Libssh2

als allererstes Updaten wir die Sourceslist und installatieren die benötigten SSH Pakete:

apt-get update
apt-get install autoconf automake gcc libssl-dev m4 make openssl php5-dev

Jetzt laden wir folgende Datei auf unseren Webserver: noobis.de/images/stories/libssh2_tar.gz

Danach installieren wir Libssh2 wie folgt:

cd /home/USER
wget http://noobis.de/images/stories/libssh2_tar.gz
mv libssh2_tar.gz libssh2.tar.gz
tar -xzf libssh2.tar.gz
cd libssh2-1.2.1
./configure && make install

Die Installation ist nun abgeschlossen.

2. Installation der benötigten Pakete: PECL SSH2

Bereitstellung der SSH Funktion für PHP.

Zuerst laden wir uns folgende Datei: noobis.de/images/stories/ssh2.tgz

cd /home/USER
wget http://noobis.de/images/stories/ssh2.tgz
tar -xzf ssh2.tgz
cd ssh2-0.11.0
phpize && ./configure --with-ssh2 && make install

Jetzt müssen wir in die php.ini noch die Extension bereitstellen.

cd /etc/php5/conf.d
echo "extension=ssh2.so" > ssh2.ini

Danach ist die Installation abgeschlossen. Mit folgendem Befehl können wir testen ob alles geklappt hat:

php -m |grep ssh2

Hier noch ein einfaches PHP Test Script (Bitte die Login-Daten abändern!):

<?php
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("server1.example.com", 22))){
    echo "fail: unable to establish connection\n";
} else {
    // try to authenticate with username root, password secretpassword
    if(!ssh2_auth_password($con, "root", "secretpassword")) {
        echo "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo "okay: logged in...\n";
 
        // execute a command
        if (!($stream = ssh2_exec($con, "ls -al" ))) {
            echo "fail: unable to execute command\n";
        } else {
            // collect returning data from command
            stream_set_blocking($stream, true);
            $data = "";
            while ($buf = fread($stream,4096)) {
                $data .= $buf;
            }
            fclose($stream);
        }
    }
}

?>

Im Erfolgsfall lautet die Ausgabe: Okey: logged in...
.
Aktualisiert ( Montag, 02. Mai 2011 um 12:01 )
 

Comments

B
i
u
Quote
Code
List
List=
[*]
URL
Name *
Email (For verification & Replies)
URL
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Working....
Finished
Failed