PHP und ssh

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi,

    ich benutzer linux-dash (php-basierte Webseite) zum Ausgeben von Infos zum Raspberry. linux-dash läuft bei mir unter Raspbian mit nginx.
    Jetzt möchte ich mit php Infos zum NAS abfragen. Das soll über ssh passieren. Die zugehörigen rsa-Keys befinden sinch auf beiden Geräten. Wenn ich die Info vom NAS (Speicherabfrage) als user www-data auf der Konsole abfrage mit:

    Code
    ssh root@NAS_IP df -h /dev/md0 | awk 'FNR==2 {print $3" von "$4" ("$5")"}'


    dann funktioniert das auch und es kommt die passende Antword (75.5G von 840.9G (8%))

    Die gleiche Abfrage in einem php-Script scheint nicht zu klappen, es kommt kein return-Wert. Das php-Script sieht aus wie folgt:


    Irgendwie scheint es Probleme bei shell_exec und ssh zu geben.
    Vielleicht hat hier jemand eine Idee, was zu tun ist?

    Willst du einen Tag lang glücklich sein, dann saufe.

    Willst du ein Jahr lang glücklich sein, dann heirate.

    Willst du ein Leben lang glücklich sein, dann fahr Yamaha.

    Einmal editiert, zuletzt von FoCMB (6. September 2014 um 12:02)

  • Warscheinlich wird das Script im Web mit dem Benutzer www-data ausgeführt, sofern du einen Apache als Webserver einsetzt.
    Du musst also darauf achten das die ssh verbindung für den Nutzer www-data eingerichtet ist. Mit sudo su www-data kannst du dich als www-data anmelden.

    Nachtrag: Ein www-data Nutzer der SSH richtig benutzen kann ist ein Sicherheitsrisiko.

  • Benutz anstatt shell_exec lieber exec , dann kriegst du sowohl den Exitcode als auch eine mögliche Antwort in einem Array.

    Der www-data Benutzer muss die ssh-keys "besitzen".
    Standardmässig ist das $HOME Verzeichnis vom www-data Benutzer: /var/www/
    Also müssten auch dort die Keys liegen, üblicherweise in einem untergeordneten Verzeichnis .ssh/

  • ddie keys liegen unter /var/www/.ssh. Die ssh-Verbindung klappt auch auf der Konsole als user www-data. Nur eben nicht mit dem php-Script. Ich werde zuhause mal das mit exec testen. Abe jetzt muss ich erstmal das Wetter fürs Mopedfahren nutzen ;)

    Willst du einen Tag lang glücklich sein, dann saufe.

    Willst du ein Jahr lang glücklich sein, dann heirate.

    Willst du ein Leben lang glücklich sein, dann fahr Yamaha.

  • So, ich habe zum Testen folgendes php-Script gebastelt:

    Wenn ich nun in das Verzeichnis wechsle, wo dieses Script liegt (/var/www/dash/linbs/...) dann eingebe:

    Code
    sudo su www-data


    und anschließend:

    Code
    php script.php


    Dann kommt der gewünschte Output.
    Pack ich das in meine dash-datei, dann klappts wieder nicht:


    Füge ich nach

    Code
    $con = ssh2_connect("NAS_IP", 22);


    ein return "test"; ein, dann wird auch test ausgegeben.
    Füge ich nach:

    Code
    $cmd = "df -h /dev/md0 | awk 'FNR==2 {print $3\" von \"$4\" (\"$5\")\"}'";


    ein return $cmd; ein, passiert nichts. Ich weiss nicht, was hier los sein kann.

    Fehelr gefunden. Nach der Installation der PHP SSH2 Extension sollte man ein

    Code
    sudo /etc/init.d/php5-fpm restart


    durchführen, sonst kann man den Fehler lange suchen.

    Willst du einen Tag lang glücklich sein, dann saufe.

    Willst du ein Jahr lang glücklich sein, dann heirate.

    Willst du ein Leben lang glücklich sein, dann fahr Yamaha.

    Einmal editiert, zuletzt von FoCMB (6. September 2014 um 18:17)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!