Discussion:
fsockopen bzw. SSH über PHP
(zu alt für eine Antwort)
Marcel Georgi
2005-03-26 10:56:46 UTC
Permalink
HI,

Ich möchte auf meinem Linuxrechner über PHP bestimmte Befehle ausführen.
Das Problem jedoch ist, dass ich nicht weiß wie ich den SSH-Key zum
SSH-Server übertragen muss damit überhaupt eine Verbindung aufgebaut
werden kann.

Mit dem folgenden Script würde nur eine Verbindung über Telnet
funktionieren:

<?

function command($strCommand) {
echo $strCommand."<br>";
return $strCommand;
}

$ssh = fsockopen("192.168.0.2","22");
if ($ssh <= 0) echo "Fehler ...";
echo fgets($ssh, 1024)."<br>";
fputs($ssh, command("username\r\n"));
echo fgets($ssh, 1024)."<br>";
fputs($ssh, command("passwort\r\n"));
echo fgets($ssh, 1024)."<br>";
fputs($ssh, command("dir\r\n"));
echo fgets($ssh, 1024)."<br>";

?>

Über Telnet (Port 23) würde jetzt im Browser der Inhalt des
Home-Verzeichnises von "Username" ausgegeben werden.

Verwende ich im Script nur die ersten 3 Zeilen:

$ssh = fsockopen("192.168.0.2","22");
if ($ssh <= 0) echo "Fehler ...";
echo fgets($ssh, 1024)."<br>";

Erscheint im Browser lediglich:

SSH-1.99-OpenSSH_3.4p1

Versuche ich mich über einen normalen Telnet-Clienten über den Port 22
auf den Linux-Rechner einzulogen, so erscheint auch nur die obige Zeile
im Ausgabefenster. Nehme ich stattesen eine spezielle
SSH-Client-Software so erscheint zumindest die Eingabeaufforderung,
welche nach dem Benutzernamen und dem dazugehörigen Passwort frägt. Nur,
wie bekomme ich dies auch über PHP zum laufen?

Viele Grüße,
Marcel Georgi
Johannes Vogel
2005-03-26 11:05:33 UTC
Permalink
Hi Marcel
Post by Marcel Georgi
Ich möchte auf meinem Linuxrechner über PHP bestimmte Befehle ausführen.
Das Problem jedoch ist, dass ich nicht weiß wie ich den SSH-Key zum
SSH-Server übertragen muss damit überhaupt eine Verbindung aufgebaut
werden kann.
Läuft denn dein PHP-Script nicht sowieso auf diesem Rechner? In diesem
Fall brauchst du kein SSH.

Ansonsten bist du wohl besser bedient, wenn du die authorized_keys von
Post by Marcel Georgi
Versuche ich mich über einen normalen Telnet-Clienten über den Port 22
auf den Linux-Rechner einzulogen, so erscheint auch nur die obige Zeile
im Ausgabefenster. Nehme ich stattesen eine spezielle
SSH-Client-Software so erscheint zumindest die Eingabeaufforderung,
welche nach dem Benutzernamen und dem dazugehörigen Passwort frägt. Nur,
wie bekomme ich dies auch über PHP zum laufen?
HTH, Johannes
Johannes Schlueter
2005-03-26 11:00:51 UTC
Permalink
Post by Marcel Georgi
Versuche ich mich über einen normalen Telnet-Clienten über den Port 22
auf den Linux-Rechner einzulogen, so erscheint auch nur die obige Zeile
im Ausgabefenster. Nehme ich stattesen eine spezielle
SSH-Client-Software so erscheint zumindest die Eingabeaufforderung,
welche nach dem Benutzernamen und dem dazugehörigen Passwort frägt. Nur,
wie bekomme ich dies auch über PHP zum laufen?
Das schöne an SSH ist, dass es verschlüsselt abläuft ;-)
Direkt in PHP wird das recht umständluch das komplette SSH-Protokoll zu
implementieren.

Ums ssh mit PHP zu nutzen gibt es zwei Wege:
- exec/popen/... - bereitet evtl. Kopfschmerzen weil das PAsswort nicht
per pipe angenommen wird lässt isch aber durch Login via private key
umgehen.
- Wenn Du PHP Extension isntallieren kannst:
http://pecl.php.net/package/ssh2

johannes
Mario Mueller
2005-03-26 12:50:15 UTC
Permalink
Post by Marcel Georgi
Das Problem jedoch ist, dass ich nicht weiß wie ich den SSH-Key zum
SSH-Server übertragen muss damit überhaupt eine Verbindung aufgebaut
werden kann.
Schon mal im Manual nachgeschaut?

http://de.php.net/manual/en/function.fsockopen.php

$ssh = fsockopen("ssl://192.168.0.2","22");

oder

$ssh = fsockopen("tls://192.168.0.2","22");

x-post & f'up2de.comp.lang.php.netzprotokolle

m.m
--
Fremdsprachen Online Lernen http://www.lingo4u.de/
Loading...