# via PHP auf eine Shell zugreifen



## John@rvfg (11. Dezember 2003)

Hallo,

ich habe einen Apache Server inkl. PHP auf meinem Root-Server installiert. Nun möchte ich mich per PHP auf einem anderen Root-Server einloggen und dort Befehle ausführen. 

Zuerst erstelle ich eine Socket Verbindung auf Port 22. Jetzt stellt sich mir aber das Problem in welcher Synthax  Username und Passwort mittels "fputs" übermittelt werden müssen. Kennt sich evtl. jemand mit dem SSH2 Protokoll aus und kann mir da helfen?

Gruss Johannes


----------



## Ben Ben (12. Dezember 2003)

ich weiss nicht ob dir der folgende link weiterhelfen, aber beim überfliegen klang es nicht schlecht.. mehr hat mein google leider nicht hergegeben...


----------



## chibisuke (12. Dezember 2003)

versuch doch mal indem du ne verbindung zum SSH tool deines servers herstellst....

einfach mal mit ProcOpen() das SSH progy öffnen und über die filehandles benutzen, geht viel einfacher als wenn du lang mit dem SSH protokoll rumfummeln musst, die implementation in PHP is nämlich net ganz einfach, sind immerhin assynchrone cryptographie verfahren.


----------



## John@rvfg (12. Dezember 2003)

chibisuke: Das bringt mir ja nur etwas, wenn ich auf den Server mit PHP zugreifen will...


----------



## chibisuke (12. Dezember 2003)

@Ben Ben: der link bringts net wirklich, da gehts um probleme mit exec() is aber für bidirektionale kommunikation total ungeeignet.

Im prinzip net viel anders als das was ich vorgeschlagen hab nur mit dem unterschied das bei meiner lösung das ssh tool bidirektional angesprochen wird und man mehr tun kann als nur einen tunnel aufbauen.



> Das bringt mir ja nur etwas, wenn ich auf den Server mit PHP zugreifen will


Ich glaube das war ganz klar die aufgabenstellung.

Unter verwendung von PHP einen anderen server über SSH zu steuern.
Einziger unterschied wenn du es selbst machst ist das du beim verbindungsaufbei bei dem einen n ProcOpen() machst bei dem anderen n sockopen() und das du bei der von mit vorgeschlagenen variante ne menge (das sind ettliche (vermutlcih mehrere hundert) seiten quellcode) programmierarbeit spaarst weil du die vorgefertigen funktionen in ssh benutzen kannst, und die nicht selbst entwickeln musst...

einziger nachteil ist das du n installierte ssh brauchst, und berechtigungen darauf zuzugreifen, was aber bei dem "root" server kein problem darstellen sollte.

solltest du trotzdem meinen es selbst implementieren zu müssten, hier: http://www.unixuser.org/~haruyama/RFC/ssh/ haste 489 KB (sollte ich mich net verrechnet haben) mit Spezifikationsinformationen zum SSH protokoll. viel spaß.


----------



## John@rvfg (13. Dezember 2003)

chibisucke: auf dem Server auf den ich zugreifen will, ist kein PHP installiert. d.h. ich muss von einem anderen Server auf dem PHP installiert ist, irgendwie eine Verbindung zu dem ohne PHP herstellen. Und was bringt mir da das lokale SSH?


----------



## chibisuke (14. Dezember 2003)

sga mal kannst dus nicht verstehen oder willst dus nicht verstehen?

*sigh*

```
server 1                  internet                    server 2
PHP <--> SSH client <--> SSH TUNNEL <--> SSH server <--> shell
```
Der server rechner braucht kein PHP nur der von dem aus der request gestartet wird.

Wie ich schon gesagt habe, ich weiß ich wiederhohl mich.
Der einzige unterschied ist das du nicht PHP den socket öffnen und die daten verschlüsseln läst sondern den SSH client und du von PHP aus nur dem SSH client mittelst was zu tun is.


Auf dem server 1. der der sich mit dem SSH server verbindet.
PHP führt ein ProcOpen aus und erstellt 2 filepointer für den zugriff
auf den SSH client, welcher ebenfalls auf server 1 installiert ist.

der SSH client von server 1 verbindet sich mit port 22 des server 2
und stellt nun ein cryptographisches interface zwischen PHP und dem
Socket dar. nun muss PHP nur alle informationen and den SSH client
übergeben und zwar genau so wie man sie auch von hand eingeben würde.


Und wenn du es jetzt immer noch nicht verstanden hast, dann kann und vor allem will ich dir nicht helfen.

Wenn du natürlich weiterhin PHP zum SSH client umfunktionieren willst bitte gerne, entsprechende referenzen für SSH hab dir ja schon genannt. Außerdem solltest du dir dringen den RSA schlüssel algoritsmus angucken, denn der wird benutzt um die daten während der übertragung zu verschlüsseln. Und ich nehm mal an das das mehrere MB an PHP code werden, also viel spaß und hohl dir ne neue tastatur weil die alte wird bald durchgeschrieben sein.

Have a lot of fun...


----------



## John@rvfg (15. Dezember 2003)

Ja, immer mit der Ruhe. Wir haben uns scheinbar etwas missverstanden. Jedenfalls habe ich jetzt mal deinen Vorschlag ausprobiert, was allerdings nicht zum gewünschten Erfolg geführt hat. So sieht mein Script aus:


```
<?php
$handle = popen('ssh -l root IP', 'w');
fputs($handle,"passwort");
pclose($handle);
?>
```

Irgendwie loggt sich PHP aber nicht ein. Wäre nett wenn du die Güte hättest, mir eventuell mal ein Beispiel zu posten.

Gruss Johannes


----------



## Arne Buchwald (15. Dezember 2003)

Sag' mal, verstehst du nicht, was chibisuke dir die ganze Zeit erzählt? Aber nee, ich nehme die Hinweise lieber nicht ernst / lese nicht, weil es ja Arbeit macht. Stattdessen sage ich lieber:


> Ja, immer mit der Ruhe.
> [...]
> Irgendwie loggt sich PHP aber nicht ein. Wäre nett wenn du die Güte hättest, mir eventuell mal ein Beispiel zu posten.


und erwarte, dass mir gefälligst jemand ein komplett fertiges Script postet.

  - ich glaub', es hackt.

// John@rvfg beschränkt


----------



## chibisuke (15. Dezember 2003)

ich würd ja nix sagen wenn ichs net gesagt hätte aber ich habs 3x gesagt... du brauchst bidirektionale pipes!

*drop*

also benutzt BITTE *ProcOpen()*  

so siehst du den link vieleicht, einmal drauf klicken für informationen zu ProcOpen bitte....



> Aber nee, ich nehme die Hinweise lieber nicht ernst / lese nicht, weil es ja Arbeit macht.



nun da gibts n nettes kleines beispiel aus dem ehemaligen yare forum....
admin verschiebt tutoral thread in die news. Begründung: "Why news? 'cause its news that ppl can read".

und nun versuchen wirs doch mal so:

```
<?php
$descriptorspec = array(
   0 => array("pipe", "r"), 
   1 => array("pipe", "w"), 
);
$process = proc_open("ssh -l root IP", $descriptorspec, $pipes);
if (is_resource($process)) {
   echo fread($pipes[0], 2096);
   fclose($pipes[0]); 
   fclose($pipes[1]);
   $return_value = proc_close($process);

   echo "command returned $return_value\n";
}
?>
```
nun kommt das ganze schon viel besser weil nun SIEHST du was SSH meldet und kannst dise information benutzen um dein script entsprechend aufzubauen.

und vergiss ja nicht die pipes zu schließen sonst is n deadlock nicht unwarscheinlich. $pipes[0] is das leseende des prozesses und $pipes[1] is das schreibende... von $pipes[0] bekommst du die ausgaben des SSH tools, nach $pipes[1] schreibst du die eingaben.

den rest, was wie du dem tool die ganzen informtionen die es braucht zukommen läst und so, da lass ich dich mal n wenig überlegen jetzt.


----------



## Ben Ben (16. Dezember 2003)

nun hätte ich mal ne frage zu dem code 


```
echo fread($pipes[0], 2096);
```

wieso genau 2096? hast du das einfach mal so angenommen, ist das bei verwendung von proc open oder bei bidirektionalen pipes irgendwie wichtig?
in der befehlübersicht wurde in diesem kontext 8192 angegeben....
nur mal so für meine private weiterbildung


----------



## Johannes Schmitt (16. Dezember 2003)

Arne: Eventuell habe ich mich etwas unklar ausgedrückt, aber gleich den Account zu sperren halte ich deshalb nicht für angebracht.

chibisuke: Ich habe es vorher mit proc_open() probiert, was allerdings genausowenig funktioniert hat, und da die Funktion proc_open() auf manchen Servern wegen einer zu alten PHP Version nicht unterstützt wird, habe ich es mit einer älteren Funktion versucht, mit welcher es genauso gehen sollte.

Mein Script mit proc_open() sieht so aus:


```
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  
   1 => array("pipe", "w"), 
   2 => array("file", "/tmp/error.txt", "a") 
);
$process = proc_open("ssh -l root IP", $descriptorspec, $pipes);
if (is_resource($process)) {
   fwrite($pipes[0], "Passwort");
   fclose($pipes[0]);

   while(!feof($pipes[1])) {
       echo fgets($pipes[1])."<br>";
   }
   fclose($pipes[1]);
   $return_value = proc_close($process);

   echo "command returned $return_value\n";
}
?>
```

$return_value ist -1

Ben Ben: Es werden nur solange Daten ausgelesen bis 2096 Bytes ausgelesen wurden oder das Ende der Datei erreicht ist. Was du da nun einsetzt ist dir überlassen und hängt von deiner Anwendung ab. Es ist aber nicht zwingend notwendig genau 2096 Bytes bei proc_open() zu benutzen.


----------



## chibisuke (16. Dezember 2003)

*sigh*

Kann es sein das dir entgangen is das SSH oftmals vor dem kennwort auch noch eingaben verlangt? z.B. will es manchmal das die übertragung des öffentlichen schlüssels bestätigt wird.

außerdem solltest du indem du die ausgaben von SSH prüfst erstmal feststellen ob die verbindung überhaupt besteht.

Mit unidirektionaler unterstützung kannst du nicht viel tun, denn SSH ist ein programm das interaktiv arbeitet und du musst ja auch prüfen ob die befehle richtig ausgeführt wurden.


2096 ist nur ein willkürlicher wert, und es ist die maximal zahl von byte die er aus der datei (in dem fall ein pipe). Wenn diese anzahl byte net verfügbar ist, dann endet der lesevorgang bei EOF, ich hätte auch nur 1000 oder auch 100000 hin schreiben können... im endeffekt kommts aufs gleiche raus....


----------



## Johannes Schmitt (16. Dezember 2003)

chibisuke: Das ist mir durchaus bekannt, aber den Schlüssel will es nur bestätigt haben, sofern die IP noch nicht in der Liste der bekannten Hosts ist, was bei mir aber der Fall ist. 

Und da per fread() keine Daten ausgegeben werden, müsste es doch heissen, dass auch keine vorhanden sind, was ja eigentlich nicht sein kann. Infolgedessen ist es mir auch schwer möglich irgendwelche Fehlerquellen zu finden. Kennst du das Problem eventuell?


----------



## Ben Ben (16. Dezember 2003)

wofür die byte anzahl steht wusste ich, wollte nur wissen ob dies willkürlich war oder einen bestimmten grund hatte... 
aber dennoch danke


----------



## chibisuke (16. Dezember 2003)

> _Original geschrieben von Johannes Schmitt _
> *chibisuke: Das ist mir durchaus bekannt, aber den Schlüssel will es nur bestätigt haben, sofern die IP noch nicht in der Liste der bekannten Hosts ist, was bei mir aber der Fall ist.
> 
> Und da per fread() keine Daten ausgegeben werden, müsste es doch heissen, dass auch keine vorhanden sind, was ja eigentlich nicht sein kann. Infolgedessen ist es mir auch schwer möglich irgendwelche Fehlerquellen zu finden. Kennst du das Problem eventuell? *




hmm das is nicht gut. kann es sein das er das SSH programm nicht findet? versuch doch mal den alsoluten pfad anzugeben...

außerdem mach bitte mal oben ein
error_reporting(E_ALL);
vieleicht ergibt das ja irgendwas.


----------



## Johannes Schmitt (16. Dezember 2003)

Ich habe jetzt eine Fehlermeldung:

16582: Pseudo-terminal will not be allocated because stdin is not a terminal. 16582: Permission denied, please try again. 16582: Permission denied, please try again. 16582: Permission denied (publickey,password,keyboard-interactive). 

Ich hoffe du kannst damit was anfangen, weil ich weiss nicht was an der stdin Pipe falsch sein soll.


----------



## chibisuke (16. Dezember 2003)

Tja die fehlermeldung sagt nur das er dir den zugriff verweigert...

und das liegt vermutlich daran das du keinen root zugriff hast mit PHP

versuch doch mal

su -c "ssh -l root IP"

als komando, und übergieb ihm als erstes an das stdin pipe das root kennwort, des servers auf dem PHP leuft.


----------



## Johannes Schmitt (16. Dezember 2003)

Wenn ichs mit dem Befehle versuche, ist der Fehler: Password: su: incorrect password 

Wenn ich genau den gleichen Befehle mit genau demgleichen Passwort aber per Hand auf der Shell ausführe, kommt kein Fehler.


----------



## chibisuke (17. Dezember 2003)

das is aber net gut... sollte eigendlich schon funktionieren...
geht hier einwandfrei...

sonst stell die berechtigung für SSH so das der PHP user es benutzen darf...

oder du versuchst es mit sudo, bedenke das du dazu den php user in mit visudo in die konfigoration einfügen musst.


----------



## Bubblez (10. Januar 2004)

*pipes, mehrere befehle nacheinander*

hi all

ich habe den code von oben übernommen und angepasst. nun sind mir aber noch einige sachen unklar.


```
$ssh = '';
$err='';
          $descriptorspec = array(
          0 => array("pipe", "r"),
          1 => array("pipe", "w"),
          2 => array("file", "/error.txt", "a")
          );
 if (is_resource($ssh)==FALSE || $ssh==""){
                   $ssh = proc_open("ssh -l cod ".$serveradr."", $descriptorspec, $pipes);
                   echo $ssh;
                   if (is_resource($ssh)){
                      //error('yes');
                      fwrite($pipes[0],'yes');
                      fclose($pipes[0]);
                      while(!feof($pipes[1])) {
                                $err .= fgets($pipes[1])."  ";
                      }
                      fclose($pipes[1]);
                      echo $err;
                      fwrite($pipes[0],'$passw');
                      fclose($pipes[0]);
                      while(!feof($pipes[1])) {
                                $err .= fgets($pipes[1])."  ";
                      }
                      fclose($pipes[1]);
                      echo $err."<br/>";

                     echo "Error-Pipes: ".$pipes.$pipes[0].$pipes[1]."<br/>";
                     //Fehler auslesen
                      echo "SSH Connection Successfull<br>";
                    }else{
                      echo "SSH Connection failed<br>";
                    }
           }
```


nun wo ich mir nicht sicher bin ist, wann ich die pipes schliessen muss. ich habe jetzt nach jeder übergabe an pipe[0], eine while und die beiden pipes geschlossen. wäre für mich am logisten so. aber irgendwie geht das nicht, die Seite bleibt weiss, bzw. er lädt endlos lang. ist das ein deadlock was ich da gemacht habe ?

also meine frage eigentlich: wie ist die stuktur wenn ich mehrere befehle nach einander übergeben muss ?

ich hoffe ich hab mich klar genug ausgedrückt!

mfg Bubblez


----------



## chibisuke (10. Januar 2004)

also 3 fehler...

1.) hast du die pipes für lesen und schreiben vertauscht....

ein "r" pipe kann man nicht schreiben, und ein "w" pipe kann man nicht lesen.. alles klar?

2.) ein geschlossenes pipe, ist geschlossen und bleibt es auch! wenn du einmal fclose() aufgerufen hast für das pipe, darfst du es später nciht mehr benutzen..

das pipe wird ganz am ende geschlossen, das sind die letzten komandos vor dem proc_close().

3.) einen prozess muss man am ende wieder schließen.
also einen proc_close() aufruf, direkt nach dem schließen der pipes.


----------



## Bubblez (11. Januar 2004)

*shh verbindung bei erneutem laden noch aktiv ?*

hi

ok danke für die schnelle hilfe!

wenn ich richtig verstanden habe sollte ich bei jedem dokumentaufruf die ssh connection von neuem herstellen ?
oder kann ich die auch einmal herstellen und dann nur auf verlangen die pipes schliessen und proc_close aufrufen ?, also das die ssh verbindung bestehen bleibt wenn ich die seite neu lade.

also etwa so mein ich:


if (is_resource($ssh)==FALSE || $ssh==""){
//SSH verbindung aufbauen
}

if ($_GET['end']){
 fclose($pipes[0]);
 fclose($pipes[1]);
 proc_close($ssh);
}
//andere commands


----------



## chibisuke (11. Januar 2004)

Die verbindung bleit selbstverständlich bestehen

proc_open()
....
....
....
//alle zugriffe auf pipes, abschließen mit fflush()
...
...
...
fclose()
fclose()
proc_close()


Naja dazwischen kannst du lesen und schreiben wie du willst, nur nach einem schreibvorgang solltest du fflush() für das pipe aufrufen, um sicherzustellen das die daten abgeschickt wurden.

Aber wenn du die seite neu lädst, kannst du die pipes nicht beibehalten, das es sich hier um nicht persistente aufrufe handelt!

das heißt jede seite am anfang erstellt die SSH verbindung und schließt sie am ende wieder...das geht leider nicht anders...


----------



## Bubblez (11. Januar 2004)

ok gut, nun begreif ich schon mehr, aber noch nicht alles .

nun es funktioniert aber leider noch nicht.

hier die URL:

http://www.webrama.de/maske/remote/serverstatus_short.org.php

bei
SSH: Resource id #7
kommt bei echo $ssh;

nun so siehts momentan aus:

                   $ssh = proc_open("ssh -l cod ".$serveradr."", $descriptorspec, $pipes);
                   echo "SSH: ".$ssh."<br>";
                   if (is_resource($ssh)){
                      fwrite($pipes[0],'$passw');
                      fflush($pipes[1]);
                      while(!feof($pipes[1])) {
                         $err .= fgets($pipes[1])."  ";
                      }
                      echo "ERROR: ".$err;
                  }
es wird kein error zurückgegeben, dann kann ich annehmen das der login funktioniert hat oder nicht ?
oder ist der fehler bei SSH der beweis das der login nicht funktioniert ?
eigentlich sollte er doch gar nicht in die if schlaufe gehen weil ich ja den resource prüfe....

weiter unten im script hab ich:
zuerst die funktion error() (am anfang des dokuments):

function error($cmd){
global $pipes;
global $descriptorspec;

   $pipes[0]='$cmd';
   fflush($pipes[1]);
   //Fehler auslesen
   while(!feof($pipes[1])) {
      $err .= fgets($pipes[1])."  ";
   }
return $err;
}
                $input=error('find / -name config.inc.php');
                echo "ERROR of input: ".$input."<br>";




noch was wenn jetzt ein befehl nid ausgeführt werden konnte oder falsche parameter hatte oder was auch immer, dann kann ich nach der fehlerbehanlung mit der while einfach den nächsten befehl schicken?

wenn ich echo fflush($pipes[0]); mache ist die ausgabe 1



ich hoffe meine fragen sind nicht zu umstädnlich... 

bist jetzt ist das forum das einzige wo ich antwort zu meinem problem bekommen habe.


----------



## chibisuke (12. Januar 2004)

Das Hier:


```
fwrite($pipes[0],'$passw');
fflush($pipes[1]);
```

Hab ich so NICHT gesagt..

Ich sagte 1.) Das es NIX bringt auf einen ReadOnly handle zu SCHREIBEN...
und 2.) sagte ich du sollst das selbe pipe flushen in das du geschrieben hast, und nicht das andere.

ich sagte:


```
fwrite($pipes[1],'$passw');
fflush($pipes[1]);
```

Alles andere bringt sichs net wirklich oder?

Außerdem sagte ich
3.) Das es NIX bringt von einem WriteOnly handle zu LESEN.


----------



## empire (20. Februar 2004)

Hallo!
Könntet ihr das ganze nochmal zusammenfassen 
also den Code so wie er im moment aussieht ?
MFG

Peter Hansen

PS: Ich brauch auch so einen SSH connect für ein script


----------



## clownger (22. Februar 2004)

jo bitte 
und evtl. noch ne beschreibung wie und wo man die commandos einfügt.
danke schön im voraus.


----------



## rythms (23. Februar 2004)

Weil ihr zu faul seid, euch die Beiträge und eventuell ein paar man-pages durchzulesen, sollen Andere für euch das ganze nochmal Idiotensicher abtippen?
Finde ich ziemlich dreist ..

Im Übrigen gilt auch hier, man sollte nichts tun wovon man keine Ahnung hat, sonst öffnet man Sicherheitslücken wie Schneunentore.


----------



## empire (23. Februar 2004)

*Andere Lösung*

Hallo,
Da ich mit den ganzen Pipes sowieso nicht Klarkomme ahbe ich mir eine andere lösung einfallen lassen 
Also:
man öffne auf dem Webserver einen screen in dem man eine ssh verbindung zu einem anderen server aufbaut ... dann muss man nurnoch mir proc_open oder dem backtick operator den screen joinen, die commands ausführen und wieder schließen ... was haltet ihr davon ? Das einzige was ich noch nicht gelöst habe ist, das beim backtick operator kein terminal geöffnet werden kann ... auf einen tip von rythms werde ich nun proc_open ausprobiern 

MFG

Peter Hansen

PS: Schreibt doch einmal eure meinung zu meiner idee ....
PPS: Postet eure scripte


----------



## heiko-witthöft (2. März 2004)

<?php 
$descriptorspec = array( 
   0 => array("pipe", "r"), 
   1 => array("pipe", "w"), 
); 
$process = proc_open("ssh -l meine IP", $descriptorspec, $pipes); 
if (is_resource($process)) { 
   echo fread($pipes[0], 2096);
   fwrite($pipes[1], "befehl xyz");
   fflush($pipes[1]);
   fwrite($pipes[1], "befehl xyz");
    fflush($pipes[1]);
   fwrite($pipes[1], "befehl xyz");
.......
   fflush($pipes[1]);
   fclose($pipes[0]); 
   fclose($pipes[1]); 
   $return_value = proc_close($process); 

   echo "command returned $return_value\n"; 
} 

Ich habe ca 3 fragen zu dem ding ^^

Hab ich das mit dem fwrite richtig vertanden ? also was da steht gibt mein php an die ssh console weiter ?

Wie funktioniert das mit dem auslesen ? wieso steht da return value ist 1 ?
Da oben stand ich soll den genauen pfad vom ssh tool angeben .. woher weiss ich ob sowas bereits installiert ist ? und wenn nicht woher bekommt man sowas ?

Mein zweck für das script ist im endeffekt das ich einen gameserver restartten will.
Und ich weiss wie ich es von hand mache und möchte meinen server einfach hintereinander mit den befehlen füttern .. hab mir das oben oft durchgelesen komme damit aber einfach nicht weiter. Wäre nett wenn ihr mir noch ein paar denkanschübe geben könntet wie ich das denn nun machen muss oder aber was ich falsch mache. 

Danke


----------



## kkcc_ghost (13. Mai 2004)

habe das selbe prob. und das selbe vor .....
müsste den befehl : /etc/init.d/hlds2_run stop  ( oder start , restart... ) ausfüren .....
1. versuch : 


```
<?
$befehl ="/etc/init.d/hlds2_run ".$do;
echo "Server $do<br>\n";
echo $befehl,"<br>";
	exec ();
	exec ($befehl,$ausgabe,$return);
	$i=0;
	while ($i<=10)
	{
		echo $ausgabe[$i];
		$i++;
	}
	exec ("exit");
?>
```
wobei $do von h ttp://...... /server.php?do=start  übergeben wurde ....
er hat die datei angesprochen , ausgeführt aber ohne effekt ...

2.versuch : 

```
<?
$passw = "root Password";
$serveradr = "server IP";
$befehl ="/etc/init.d/hlds2_run ".$do;
$ssh = ''; 
$err=''; 
$descriptorspec = array( 
	0 => array("pipe", "r"), 
	1 => array("pipe", "w"), 
   2 => array("file", "error.txt", "a") 
	); 
if (is_resource($ssh)==FALSE || $ssh=="")
{ 
	$ssh = proc_open("ssh -l cod ".$serveradr."", $descriptorspec, $pipes); 
   if (is_resource($ssh))
   { 
		fwrite($pipes[1],'root'); 

		fwrite($pipes[1],'$passw'); 
		fflush($pipes[1]);
 
 		fwrite($pipes[1],"/etc/init.d/hlds2_run ".$do); 
		fflush($pipes[1]);
		
		fclose($pipes[0]);  
		fclose($pipes[1]); 
 $return_value = proc_close($ssh); 
		echo "SSH Connection Successfull  ..  $return_value<br>"; 
	}
	else
	{ 
		echo "SSH Connection failed<br>"; 
	} 
}
?>
```
wobei $do von h ttp://...... /server.php?do=start übergeben wurde
ebenso kein effekt , und ausgabe : SSH Connection Successfull  
in error.txt dieses : 


> Pseudo-terminal will not be allocated because stdin is not a terminal.
> Host key verification failed.



irgentwie komm ich nimmer weiter. .....
kann mir da mal einer helfen 
BIG THX im voraus 
**GHOST**

ps: ich will keinen fertigen code , sondern nur nen tip oder ähnliches das ich mal weiterkomme THX


----------



## altione (23. Mai 2004)

Hi, ich bin das Problem mit Bubblez mal durchgegangen. Ich denke wir haben ne brauchbare Lösung gefunden.

Habe eine kleine PHP-Klasse geschrieben, mit der es ganz einfach sein sollte, Befehle auf Remoterechnern via Webinterface(PHP) auszuführen.

Runterladen könnt ihr euch das Script unter folgendem Link
SSHExec-PHP-Klasse 
Die Anleitung unter Readme.txt sollte selbsterklärend sein.

ansonsten könnt ihr mr auch gerne ne Mail unter daniel.altiparmak@systenius.de shreiben.

Have Fun.


P.S. Ich suche ne Seite, auf der ich das Script veröffentlich kann, dass noch mehren geholfen wird.

P.P.S.S Desweitere suche ich SSH - Errorcodes, kann mir da jemand vielleicht helfen ?


----------



## Fakespace (21. Juni 2004)

Moin


hab mir die classe angesehen und ausprobiert, geht einwandfrei 

Aber kann man so auch irgendwie Dateien editieren, die auf dem anderen Rechner sind ?


----------



## altione (9. August 2004)

Also der Link sollte wieder gehen, war kurze Zeit off, da ich Webspace umgezogen bin !


----------



## CaCO3 (26. Mai 2005)

Vielen Dank an Daniel Altiparmak, dass ich den Script auf meiner Webseite veröffentlichen darf.
(http://www.ruinelli.ch/index.php?id=sshexec)


----------

