Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SSH-Verbindung mit PHP funktioniert (teilweise) nicht..

Frage Entwicklung PHP

Mitglied: thaddaeus93

thaddaeus93 (Level 1) - Jetzt verbinden

28.12.2014 um 16:46 Uhr, 2054 Aufrufe, 16 Kommentare

Hallo zusammen,

zunächst habe ich folgendes vor:
Ich möchte über PHP/SSH zwei WLAN-Access-Points ansteuern und auf diesen SSH-Befehle ausführen (z.B. zum Ein/Ausschalten einer SSID). Ich habe einen Debian-Server (6.0) mit Apache2/PHP5 und libssh2 installiert.

Wenn ich auf den eigenen Server über SSH zugreife (über das PHP-Script), dann funktioniert es tadellos. Wenn ich jedoch den Access-Point ansteuern möchte, lädt die Seite ewig und es tut sich nichts...

Hier der Code des PHP-Script's:

01.
<?php 
02.
 
03.
// Bitte aendern passen Sie die folgenden Variablen an: 
04.
$server['ip'] = "172.22.31.149"; 	// IP des Servers 
05.
$server['sshport'] = 22;   		// SSH Port (Standart: 22) 
06.
$server['user'] = "admin"; 		// Benutzername 
07.
$server['pw'] = "admin"; 		// Passwort des Benutzers 
08.
 
09.
$command = "get ssid"; 			// Dieser Befehl wird auf dem SSH Server ausgeführt! 
10.
 
11.
// ab hier wenn möglich nichts mehr veraendern 
12.
if($ssh = ssh2_connect($server['ip'], $server['sshport'] ))  
13.
14.
	if(ssh2_auth_password($ssh, $server['user'], $server['pw']))  
15.
16.
		echo("Verbindung und Anmeldung erfolgreich!<br /><br />"); 
17.
		$stream = ssh2_exec($ssh, $command); 
18.
		stream_set_blocking($stream, true); 
19.
		$data = ''; 
20.
		while($buffer = fread($stream, 4096))  
21.
22.
			$data .= $buffer
23.
24.
		fclose($stream); 
25.
		print $data
26.
27.
	 else  
28.
29.
		 echo "Fehler: Es konnte keine Verbindung zum ausgew&auml;hlten Server hergestellt werden. Benutzername oder Passwort falsch."
30.
31.
32.
else  
33.
34.
echo "Fehler: Es konnte keine Verbindung zum ausgew&auml;hlten Server hergestellt werden. Server-IP oder SSH Port falsch."
35.
36.
 
37.
?>
Die Verbindung über PUTTY zum AccessPoint (bzw. zu beiden Access-Points) geht einwandfrei - nur leider nicht über das Script ;-(
Ich vermute den Fehler fast nicht direkt bei dem Script, sondern eher bei SSH..

Vielen Dank schon mal für Eure Hilfe!

Mitglied: colinardo
28.12.2014, aktualisiert um 17:52 Uhr
Hallo thaddaeus93,
versuch mal bei ssh_connect die entsprechenden Methoden für den
Schlüsselaustausch explizit mitzugeben:
http://php.net/manual/de/function.ssh2-connect.php

Die für deinen angesprochenen Accesspoint ausgehandelten Parameter kannst du ja im Connection-Status der Putty-Verbindung ablesen. Eventuell unterstützen die APs hier nur Protokolle die libssh2 nicht unterstützt, oder es gibt da ein Kompatibilitätsproblem.

Um was für APs handelt es sich denn überhaupt ?

Und auch mal das ErrorReporting von PHP im Script aktivieren.
error_reporting(E_ALL);
Wenn's ganz hart kommt auch mal Wireshark auf dem Debian mitlaufen lassen.

Grüße Uwe
Bitte warten ..
Mitglied: thaddaeus93
28.12.2014 um 20:12 Uhr
Hallo colinardo,

vielen Dank für deine Tipps!

Ich habe zunächst die Zeile für den Verbindungsaufbau geändert - laut php.net sollte libssh2 alle gängigen Verfahren unterstützen:

01.
... 
02.
$method = array("kex"); 
03.
 
04.
// ab hier wenn möglich nichts mehr veraendern 
05.
if($ssh = ssh2_connect($server['ip'], $server['sshport'], $method))  
06.
07.
	if(ssh2_auth_password($ssh, $server['user'], $server['pw']))  
08.
....
Auffällig ist, dass der AccessPoint ein anderes Verfahren benutzt, als der Linux-Server:

AccessPoint:
b6c5e006e3c5474dbebc3127cf4e1dec - Klicke auf das Bild, um es zu vergrößern

Server:
65ce630d284ce6c3f7b34a9d2f69f8ed - Klicke auf das Bild, um es zu vergrößern

Das Einschalten des Error-Reportings hat leider keine weiteren Erkentnisse gebracht - der Server gibt gar keine Meldung zurück (Scheinbar eine Fehlfunktion?)

Gruß
Frank
Bitte warten ..
Mitglied: colinardo
28.12.2014, aktualisiert um 22:14 Uhr
$method = array("kex"); 
das ist hier aber falsch umgesetzt. Les die Seite nochmal genauer

Häng dich mal mit Wireshark in die Leitung und studiere die Logs des AP und die Syslogs des Debian-Systems.

Grüße Uwe
Bitte warten ..
Mitglied: thaddaeus93
28.12.2014 um 22:15 Uhr
Hallo Uwe,

die Methode habe ich jetzt nochmal überarbeitet (.....)

01.
...... 
02.
$methods = array
03.
'kex' => 'diffie-hellman-group1-sha1'
04.
'hostkey' => 'ssh-dss'); 
05.
 
06.
// ab hier wenn möglich nichts mehr veraendern 
07.
if($ssh = ssh2_connect($server['ip'], $server['sshport'], $methods))  
08.
....
Im Log des AP's konnte ich leider gar nichts finden (Das Logfile ist auch nicht sehr "üppig")..
Folgendes ist mir aufgefallen:

Sobald ich mehrfach versuche, über das nicht funktionierende PHP-Script eine Verbindung zum AP aufzubauen, "blockiert" der Access-Point. Ich komme dann nichtmal mehr über PUTTY auf den AP ("Connection refused").

Nach einer Weile geht es dann wieder...
Wegen Wireshark muss ich mal schauen

Gruß
Frank
Bitte warten ..
Mitglied: colinardo
28.12.2014, aktualisiert um 22:18 Uhr
Noch zur Info: Folgende pur in PHP geschriebene SSH Bibliothek könnte was für dich sein:
http://phpseclib.sourceforge.net/

Mit der Bibliothek hatte ich hier bisher keinerlei Probleme. Und der unschlagbare Vorteil, du benötigst keinerlei Modul für den Apache, das Einbinden der PHP-Datei genügt.
Bitte warten ..
Mitglied: colinardo
28.12.2014, aktualisiert um 22:29 Uhr
Sobald ich mehrfach versuche, über das nicht funktionierende PHP-Script eine Verbindung zum AP aufzubauen, "blockiert" der Access-Point. Ich komme dann nichtmal mehr über PUTTY auf den AP ("Connection refused").
Das wird dann die Firewall bzw. ein Sicherheitsmechanissmus des APs sein, oder die maximale Anzahl an offenen nicht geschlossen Sessions ist erreicht, dann blockt der jeden weiteren Verbindungsversuch bis die halb offenen Sessions durch ein Timeout geschlossen werden.

Um welche APs handelt es sich wenn man zum zweiten mal Fragen darf ?
Bitte warten ..
Mitglied: thaddaeus93
28.12.2014 um 22:42 Uhr
Danke für den Tipp!

Leider funktioniert es noch so gar nicht.. Aber da werde ich morgen nochmal schauen
Bitte warten ..
Mitglied: thaddaeus93
28.12.2014 um 22:43 Uhr
Okay, ja sowas hatte ich mir schon gedacht...
Es sind zwei D-Link DAP-2553
Bitte warten ..
Mitglied: thaddaeus93
28.12.2014 um 22:44 Uhr
Ein Cisco-Switch (SG300 28p) habe ich auch noch zum testen - hier verhält es sich aber genauso, wie bei den Access-Points...
Bitte warten ..
Mitglied: stefaan
28.12.2014 um 23:29 Uhr
Servus,

alternativ Telnet, wenn das Netz vertrauenswürdig ist.
Oder du baust den Weg übers Webinterface nach (HTTP-GETs und POSTs).

Grüße, Stefan
Bitte warten ..
Mitglied: colinardo
28.12.2014, aktualisiert 29.12.2014
Zitat von thaddaeus93:

Ein Cisco-Switch (SG300 28p) habe ich auch noch zum testen - hier verhält es sich aber genauso, wie bei den Access-Points...
Das hört sich jetzt aber eher nach einer fehlerhaft konfigurierten Firewall auf dem Debian-System an wenn du nur mit dem lokal laufenden SSH-Daemon connecten kannst und mit sonst keinem anderen SSH-Server.
Also Firewall erst mal komplett ausschalten, und mal eine andere Kiste mit einem Testlinux mit SSH aufsetzen mit dem du dich verbindest.

Sind irgendwelche anderen Devices/Switches/Firewalls zwischen dem Debian-System und den APs die Einfluss auf die Verbindung haben könnten ?

Und hast du schon mal mit fsockopen() versucht dich auf Port 22 zu verbinden ?
Wenn das nämlich nicht klappt hast du ein Netzwerkproblem!
Bitte warten ..
Mitglied: thaddaeus93
29.12.2014 um 10:06 Uhr
Hallo Stefan,

ja, das wäre auch eine Möglichkeit.. Leider unterstützt das der AP soweit ich weiß nicht & SSH ist ja auch sicherer

Das mit dem Webinterface würde bei den Access-Points gut klappen - nicht aber bei dem Cisco-Switch..

Gruß
Frank
Bitte warten ..
Mitglied: thaddaeus93
29.12.2014 um 10:12 Uhr
Hallo Uwe,

ich habe noch einen anderen Debian-Server (Asterisk) am Laufen - mit dem konnte ich mich ohne Probleme verbinden und "uname -r" ausführen, dann hat er die Kernel-Version angezeigt. Scheint also eher kein Firewall-Problem zu sein..

Gruß
Frank
Bitte warten ..
Mitglied: colinardo
29.12.2014, aktualisiert um 14:25 Uhr
Dann häng mal an die Befehle einen Zeilenumbruch an \n eventuell hängt ja nur die Befehlszeile und wartet auf einen zusätzlichen Return - normalerweise sollte das ja die Bibliothek automatisch machen, aber probieren kann man es ja mal.

Ansonsten wie gesagt Wireshark ...der sollte Licht ins Dunkel bringen.

Eine erfolgreiche SSH2-Verbindung sieh da bspw. folgendermaßen aus:

97e3ddd6c436af4bb1b30c50395b1c29 - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: thaddaeus93
30.12.2014 um 11:37 Uhr
Hallo Uwe,

das mit der Bibliothek war ein sehr guter Tipp! (ist auch wesentlich einfacher als über libssh2)..

Ich habe mal probeweise das Script auf einem XAMPP-Server (unter Windows Server 2008) laufen lassen - uns siehe da: Die SSH-Verbindung steht!

7598d7c90d20723bf20c8862ded654a1 - Klicke auf das Bild, um es zu vergrößern

Nur leider gibt der AccessPoint auf meinen Befehl "get ssid" nichts zurück..
Aber das "WAP->" kommt definitiv vom AccessPoint.. Wenn ich ihn über Putty aufrufe, meldet er sich auch mit "WAP->"..

Ich vermute fast einen "Denkfehler" bei der ganzen Sache..

Hier mein "neuer" Quellcode:
01.
<?php 
02.
include('Net/SSH2.php'); 
03.
echo("<h2>SSH-Verbindung zum AccessPoint</h2><br />"); 
04.
$ssh = new Net_SSH2('172.22.31.149'); 
05.
if (!$ssh->login('admin', 'Test123')) { 
06.
    exit('Login Failed'); 
07.
08.
 
09.
function packet_handler($str
10.
11.
    echo $str
12.
13.
 
14.
$ssh->exec('get ssid', 'packet_handler'); 
15.
 
16.
?>
Bitte warten ..
Mitglied: colinardo
30.12.2014, aktualisiert um 12:10 Uhr
Schon den den Output-Buffer "geflusht"
http://stackoverflow.com/questions/23409125/phpseclib-real-time-output- ...
Scheint als wäre der Befehl den du absetzt das Hauptproblem, der scheint sich nicht richtig zu beenden.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst Wake on LAN funktioniert teilweise nicht (11)

Frage von DarkScabs zum Thema LAN, WAN, Wireless ...

Debian
gelöst SSH Verbindung zu meinem neuen PI2: Connection refused (5)

Frage von M.Marz zum Thema Debian ...

Exchange Server
gelöst Outlook 2016 und Exchange 2010 Verbindung funktioniert nicht, Autodiscover läuft (5)

Frage von Thorsten85 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...