Top-Themen

Aktuelle Themen (A bis Z)

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, 2269 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 ..
Ähnliche Inhalte
Debian
Debian SSH funktioniert nicht richtig
gelöst Frage von geforce28Debian8 Kommentare

Hallo. Ich habe eine Debian 7.6.0 amd64 Version frisch installiert. (minimal) Dann via "apt-get install ssh" den ssh Server ...

Linux Tools
Verbindung per SSH klappt nicht
gelöst Frage von coltseaversLinux Tools3 Kommentare

Hallo zusammen, ich habe einen neuen Kunden bekommen, der einen eigene Mailserver im Büro stehen hat. Nun soll ich ...

Router & Routing
Portforwarding funktioniert teilweise
Frage von mcallister001Router & Routing5 Kommentare

Hallo Zusammen Ich habe folgendes Problem: Ich will auf meinen Router eine Portweiterleitung von 3389 für meinen Heim-Laptop machen, ...

Microsoft Office
AutoVervollständigen funktioniert nur teilweise
gelöst Frage von AndreasFredersdorfMicrosoft Office6 Kommentare

Hallo, bin neu hier. Ich habe eine Frage: Vor kurzem mußte ich von OpenOffice zu Microsoft Excel 2007 wechseln ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 48 MinutenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...