# per php eine ssh verbindung aufbauen



## deinpapa (3. Mai 2006)

Hallo alle zusammen.


Ich bin auf der suche nach einem Script, mit dem ich eine SSH verbindung über eine PHP seite aufbauen kann.

Allso so sollte es sein, ich drücke auf der php seite auf xx starten und das script macht dann so was.
Es baut eine SSH verbindung auf und gibt die befehle ein wie screen -x.. ./xx starten und dann gibt es noch EXIT ein und das wars.

Habe im net nur so was finden können aber kann damit nichts anfangen:

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

Ich habe es mir so gedacht:

```
$ssh = fsockopen("tls://192.168.0.2","22");
$user = "user1";
$pass = "123456";
$f = "cd programm-xx";
$befehl = "programm-xx start";
$exit = "exit";
fwrite($ssh,$user,$pass,$f,$befehl,$exit);
fclose($ssh);
```


Hoffe da kann mir einer weiter helfen, quelle mich schon wochenlang damit ab.

Were net wenn mir einer ein Beispiel coden würde.

Ach ja das sollte auf einem Linzux server laufen.


----------



## Gumbo (3. Mai 2006)

Hast du es schon mal ohne URI-Schema probiert? Übrigens hat die fwrite()-Funktion hat übrigens nur drei Parameter.


----------



## Dennis Wronka (3. Mai 2006)

Wenn ich mich recht erinnere ist SSH nicht einfach eine SSL/TLS-verschluesselte Telnet-Verbindung. Zum Beispiel wird ja bei SSH auch der Host-Key ausgetauscht.
Ich hab grad mal kurz getestet und folgende Information bekommen:

```
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:140770FC:SSL routines:func(119):reason(252) in /ssh.php on line 2

Warning: fsockopen(): Failed to enable crypto in /ssh.php on line 2
```
Eine Verbindung mit ssl://mail.yahoo.com:443, also eine HTTPS-Verbindung, ist jedoch ohne Probleme moeglich.

Es gibt fuer SSH jedoch eine Extension. Das Problem dabei ist nur wieder, dass diese bei wahrscheinlich so gut wie keinem Hoster vorzufinden sein wird.


----------



## deinpapa (3. Mai 2006)

@Gumbo
Wie geht das mit URI-Schema?
Känne mich da nicht so was, sieht man ja sonst würde ich ja nicht fragen.

Kann mir jemand ein Beispiel coden wie das gehen kann?
Würde mich sehr darüber freun.


----------



## Gumbo (3. Mai 2006)

Der Verbindungsaufbau ohne URI-Schema sähe etwa wie folgt aus:
	
	
	



```
fsockopen('192.168.0.2', 443);
```


----------



## deinpapa (3. Mai 2006)

@Gumbo

Kannst du mir ein kompletes script geben ?


----------



## Gumbo (3. Mai 2006)

> Kannst du mir ein kompletes script geben ?


Klar: Folgendes Skript gibt den Text „Lorem Ipsum“ als Klartext aus.
	
	
	



```
<?php

	header('Content-Type: text/plain', true);
	echo 'Lorem Ipsum';

?>
```
Was erwartest du von mir? Ich weiß doch gar nicht, was genau du vor hast?


----------



## mAu (3. Mai 2006)

Ich fände ein Script bezüglich deiner Rechtscheibung ganz sinnvoll... Ansonsten schließe ich mich Gumbo an


----------



## deinpapa (3. Mai 2006)

sry

Habe doch in meinem ersten post geschrieben was ich machen will allso was das script machen soll oder der code.

Ich will das der code eine ssh verbindung aufbaut und dann den benutzernamen und das passwort eingiebt.
Und wenn der dann eingelogt ist erst den richtigen fad eingibt ( cd /programm/programm1/ ) und dann einen befehl ( sreem -xx ./programm1 starten ) und dann noch ein befehl ( exit ) und das wars.

Will genau gesagt über eine PHP seite verschiede programme steuern.
Allso wenn ein programm aus ist, das dann über die Seite starten kann, damit ich nicht immer das per hand machen muss.


----------



## kevkev (4. Mai 2006)

http://www.tutorials.de/forum/1267592-post3.html

Schau dich nach der Extension um.


----------



## deinpapa (4. Mai 2006)

Hallo


Ich habe jetzt einiges versucht und glaube ich habe es derzeit mit diesem code geschaft das ich eine verbindung zum SSH server aufbauen kann aber weiss nicht wie ich mich einogenen soll und wie ich befehle eingebe.
Der Code:

```
$cfgServer = "192.168.1.100";  //IP of your router
$cfgPort    = 22;                //port, 22 if SSH
$cfgTimeOut = 10;

$usenet = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut);

if(!$usenet)
       {
       echo "Connexion failed\n";
       exit();
       }
else
       {
       echo "Connected\n<BR>";
       fputs ($usenet, "username\r");
       fputs ($usenet, "Password\r");
       fputs ($usenet, "exit\r");
       while (!feof($usenet))
               {
               echo ". ".fgets($usenet, 128)."<BR>\n";
```

Allso wenn ich diesen code benutze kommt auf der seite "Connected" aber wie es aussieht logt er sich nicht ein.
Weiss einer wie ich das machen kann ?


----------



## Matthias Reitinger (4. Mai 2006)

Du benötigst eine PHP-Version, die mit den libssh2-Bindings kompiliert wurde.

Es wäre zwar sicher auch eine Lösung ohne dieses Modul möglich, allerdings wäre der Aufwand dabei nicht unerheblich hoch.


----------



## deinpapa (5. Mai 2006)

Hi danke für den tip.

Aber ich kriege es damit auch nicht gebacken.

Ich benutze diesen code:

```
<?php 

$con=ssh2_connect('192.168.0.1', 22); 
ssh2_auth_password($con, "user", "password"); 
$shell=ssh2_shell($con, 'xterm'); 
fwrite( $shell, "cd /programme\n"); 
fwrite( $shell, "screen -xx ./programm1 start\n"); 
fwrite( $shell, "exit\n"); 

?>
```

Ich krige diese fehlermeldung immer:
Fatal error: Call to undefined function: ssh2_connect() in /ssh.php on line 3


Kann mir jemand einfach ein code geben mit dem es gehen soll und nicht nur links oder so ?
Wer sehr dankbar.


----------



## Matthias Reitinger (5. Mai 2006)

Matthias Reitinger hat gesagt.:
			
		

> Du benötigst eine PHP-Version, die mit den libssh2-Bindings kompiliert wurde.


Was du scheinbar nicht hast.


----------



## deinpapa (5. Mai 2006)

Und welche PHP-Version, wurde mit dem libssh2-Bindings kompiliert 

Habe das auch gerade erfahren das die fehlermeldung sagt das mein PHP diesen befehl nicht kännt.


----------



## Matthias Reitinger (5. Mai 2006)

Folge doch einfach mal meinem Link. Da gibt es ein großes Unterkapitel namens „Installation“.


----------



## deinpapa (5. Mai 2006)

Hi 

Ich sehe da kein Unterkapitel namens „Installation“.

Kannst mir einen direckten link geben ?


----------



## Sinac (5. Mai 2006)

deinpapa hat gesagt.:
			
		

> Hi
> 
> Ich sehe da kein Unterkapitel namens „Installation“.
> 
> Kannst mir einen direckten link geben ?



Hallo? Direkt nach anklicken des Links springt dir das Wort "Installation" ins Gesicht!
Außerdem achte BITTE auf korrekte Groß- und Kleinschreibung, das kann man ja nicht mit ansehen!


----------



## deinpapa (5. Mai 2006)

ups sry.

Hatte die seite noch offen gehabt und nach deinem post habe ich mich Links und oben umgesehen und nicht im Text.

Werde es Heute abend testen.
Danke schon mal in voraus.


----------



## deinpapa (6. Mai 2006)

Hallo 

Ich bins nach mal.


Kann mir jemand einen Link zu einem tut geben, der sich mit der instalatien bescheftigt?

Kriege es nicht so hien, wie es da steht, weiss nicht wo ich die sachen rein machen soll und so.
Und kann die ssh2.so nicht erstehlen da da dann kommt befehl unbekant.
Habe alles so gemacht wie es da beschrieben wurde oder auch nicht, da es ja nicht geht.


----------



## mAu (6. Mai 2006)

Kann doch nicht so schwer sein eine DLL in einen Ordner zu kopieren und in die php.ini einzutragen, oder? Hast du deinen Websever auch restarted?


----------



## deinpapa (6. Mai 2006)

Wie ich schon mal oben gepostet habe.

Das soll auf einer Linux Maschiene laufen.

Und dacher muss man das anderes machen.

Ich habe es auf meinem Haus WebServer testestet der ist Win.

Habe die php_ssh2.dll in den entsprechenden ortner kopiert und die php.ini bearbeitet.
Aber die Fehler meldung kommt noch immer. ( Habe den auch restartet )


----------



## Dennis Wronka (6. Mai 2006)

Schau mal mittels phpinfo() ob die Extension auch geladen wurde.

Zu dem Linux-Server auf dem das laufen soll: Hast Du da root-Zugriff oder ist das einfach nur eine Box bei einem Hoster? In letzterem Fall wirst Du das naemlich wohl vergessen koennen.


----------



## deinpapa (6. Mai 2006)

Hi

Ich habe nachgeschaut.

Und OpenSSL habe ich gefunden und da steht das:

```
openssl
OpenSSL support  enabled  
OpenSSL Version  OpenSSL 0.9.7b 10 Apr 2003
```

Wie sehe ich ob die andere geht, allso libssh2 ?


Ja ich ich habe root-zugang.


----------



## deinpapa (8. Mai 2006)

Hallo

Ich habe im net herum gesacht und einiges gefunden und habe das ausprobiert, aber das geht bei mir nicht.

Ich habe libssh2-0.13, openssl-0.9.8b und zlib installiert.

Unswar habe ich alles installiert, wie es in der anleitung steht aber es geht einfach nicht.

Bei dein installationen ist kein fehler aufgetreten nur beim pear install ssh2 ausfüren. 


Ich habe auch zlib version 1.2.3 installiert,
aber bei phpinfo () kommt das:


```
zlib
ZLib Support  enabled  
Compiled Version  1.2.2  
Linked Version  1.2.2  

Directive Local Value Master Value 
zlib.output_compression Off Off 
zlib.output_compression_level -1 -1 
zlib.output_handler no value no value
```

Und das SSH2 wierd bei der, phpinfo () nicht erwent.

Habe den kompleten root-server neugestartet und das nicht nur einmal.


Wenn ich pear install ssh2 eingebe kommt das:


```
tuse645:/opt # pear install ssh2
PHP Warning:  Unknown(): Unable to load dynamic library '/usr/share/extensions/no-debug-non-zts-20020429/ssh2.so' - /usr/share/extensions/no-debug-non-zts-20020429/ssh2.so: cannot open shared object file: No such file or directory in Unknown on line 0
downloading ssh2-0.10.tgz ...
...done: 22,187 bytes
5 source files, building
running: phpize
Configuring for:
  PHP Api Version:   20020918
  Zend Module Api No:   20020429
  Zend Extension Api No:   20021010
`phpize' failed
tuse645:/opt #
```

Kann mir da jemand helfen ?

Ich habe schon alles versuche was ich gefunden habe und das nicht nur einmal.


----------



## Dennis Wronka (8. Mai 2006)

SSH2 fuer PHP ist keine Pear-Komponente sondern eine PECL-Extension.
Die musst Du kompilieren.


----------



## deinpapa (8. Mai 2006)

Ja danke aber das sagt mir nicht viell.

Habe doch glaube ich bei meinem ersten post geschrieben das ich micht nicht so diesen sachen auskänne.

Das meinst du mit: " Die musst Du kompilieren. "

Meinst du wegen dem befehl : " pear install ssh2 "

Das habe ich bei google gefunden da hatte einer fast das gleiche problem wie ich aber der hat dann aufgehört zu posten.

Kann es sein das ich Pear installieren muss ?
Weiss nicht ob es installiert ist.
Das system das ich benutze war schon fertig und dacher weiss ich nicht was alles drauf ist und auch nicht wo alles ist.


----------



## Dennis Wronka (8. Mai 2006)

Wie gesagt, die SSH-Extension hat nichts mit PEAR zu tun.
Dementsprechend wird eine Installation von PEAR nichts bringen und auch ein Installationsversuch der Extension mittels PEAR nicht.

Manchmal kann ein Blick in die Doku nicht schaden, denn da steht in der Regel alles drin was man wissen muss.
http://www.php.net/ssh2

Und ich moechte Dich bitten Dich etwas durchgaengiger an Gross- und Kleinschreibung zu halten.


----------



## deinpapa (8. Mai 2006)

Danke Dennis Wronka

Es geht jetzt, nur meine PHP-Code geht noch nicht.

Da kommt diese Fehler Meldung:
" Warning: ssh2_auth_password(): Authentication failed for server using password in /home/server/ssh.php on line 5

Fatal error: Maximum execution time of 30 seconds exceeded in /home/server/ssh.php on line 6 "

Der der Code:

```
<?php 
$ip = "192.147.72.54";
$port = 22;
$con = ssh2_connect($ip, $port); 
ssh2_auth_password($con, 'user', 'pass'); 
$shell=ssh2_shell($con, 'xterm'); 
fwrite( $shell, "cd /programm\n"); 
fwrite( $shell, "programm1 start\n"); 
fwrite( $shell, "exit\n"); 

?>
```

Aber ich schafe das jetzt auch noch.


----------



## blackowi (28. Mai 2007)

deinpapa hat gesagt.:


> Danke Dennis Wronka
> 
> Es geht jetzt, nur meine PHP-Code geht noch nicht.
> 
> ...



Bei mir ist das so ich komme über putty rein aber per script nicht was ist da falsch?


----------



## Flex (28. Mai 2007)

Die gleiche Fehlermeldung?

PHP Version?
Ist SSH2 vorhanden?
OpenSSL installiert?


----------



## blackowi (28. Mai 2007)

Felix Jacobi hat gesagt.:


> Die gleiche Fehlermeldung?
> 
> PHP Version?
> Ist SSH2 vorhanden?
> OpenSSL installiert?



also php:5.2.1
ssh2 
libssh2 version 	0.11
banner 	SSH-2.0-libssh2_0.11
remote forwarding 	enabled
hostbased auth 	enabled
polling support 	enabled
publickey subsystem 	enabled

openssl
OpenSSL support 	enabled
OpenSSL Version 	OpenSSL 0.9.8d 28 Sep 2006

ist bei mir zuhause erst mal nur drauf zum testen (xampp)


----------



## Flex (28. Mai 2007)

Und der Quelltext? Der gleiche wie oben?

Ansonsten mal probieren, ob [phpf]ssh2_auth_none[/phpf] etwas zurück gibt.


----------



## blackowi (28. Mai 2007)

Felix Jacobi hat gesagt.:


> Und der Quelltext? Der gleiche wie oben?
> 
> Ansonsten mal probieren, ob [phpf]ssh2_auth_none[/phpf] etwas zurück gibt.



so wie oben und wenn ich es ohne machen (ssh2_auth_none) dann wird er nicht fertig beim laden


----------



## blackowi (28. Mai 2007)

blackowi hat gesagt.:


> so wie oben und wenn ich es ohne machen (ssh2_auth_none) dann wird er nicht fertig beim laden



also ich habe jetzt das so:

<?
$con=ssh2_connect('++.106.63.++', 22); 
if (!$con) die('Connection failed');

$id=ssh2_auth_none($con, 'root'); 
print_r($id);
?>

Ausgabe:
Array ( [0] => publickey [1] => keyboard-interactive )


----------



## blackowi (29. Mai 2007)

geht es vielleicht nicht weil ich von meinen rechner(zuhause) auf den server(im netz) zugreifen will ?


----------



## blackowi (1. Juni 2007)

Ich möchte eigentlich nicht 1000 mal hintereinander posten, aber ich kann das Porblem nicht lösen, bitte helft mir, es ist sehr dringend!


----------



## Sven Sudau-Fischer (10. Mai 2011)

Ich poste jetzt einfach mal ein Tutorial, welches selbst mir DAU geholfen hat dieses Problem zu lösen:
Make SSH Connections with PHP

Man muss einfach nur Schritt für Schritt alles abarbeiten und schon läuft es. *smile*

Liebe Grüße

Sven


----------

