Andreas: Problem mit SSH

Hallo!

Habe ein seltsames Problem mit SSH. Und zwar kann ich prima per SSH auf den Server zugreifen, mit putty, plink, aber nicht mit pscp?!?!
Wie gesagt, putty und plink funktionieren ganz normal, aber wenn ich sowas wie:

pscp fred@example.com:/home/tom/datei.txt .

in der Windows Kommandozeile eingebe, funktioniert es nicht. Wenn ich mir mit -v alle Meldungen anzeigen lasse, kann ich feststellen, das die Verbindung erfolgreich hergestellt worden ist(user und pass OK, "authentification successful"), aber als nächstes kommt die Meldung "unknown User 12345" und ich bin wieder raus.

Hat jemand ne Idee in welcher Richtung der Fehler liegen könnte? Wahrscheinlich irgendwas mit Rechten, aber wenn ich normal mit Putty arbeite(gleiche Zugangsdaten) habe ich eigentlich alle Möglichkeiten. Ich habe das Verzeichnis mal mit CHMOD 777 versehen, bringt auch nichts. Jemand ne Idee?

Grüße
Andreas

  1. Hallo,

    pscp fred@example.com:/home/tom/datei.txt .

    in der Windows Kommandozeile eingebe, funktioniert es nicht. Wenn ich mir mit -v alle Meldungen anzeigen lasse, kann ich feststellen, das die Verbindung erfolgreich hergestellt worden ist(user und pass OK, "authentification successful"), aber als nächstes kommt die Meldung "unknown User 12345" und ich bin wieder raus.

    Wie kommt er denn plötzlich auf 12345 oder war das nur ein Beispiel?
    Normalerweise müsste es ja der gleiche sein wie oben angegeben (also fred).

    Hat jemand ne Idee in welcher Richtung der Fehler liegen könnte? Wahrscheinlich irgendwas mit Rechten, aber wenn ich normal mit Putty arbeite(gleiche Zugangsdaten) habe ich eigentlich alle Möglichkeiten. Ich habe das Verzeichnis mal mit CHMOD 777 versehen, bringt auch nichts. Jemand ne Idee?

    Naja .... günstig wäre auch der betreffenden Datei CHMOD 777 zu geben. Aber ich glaube auch nicht, dass es daran liegt. Was sagt der das Logfile vom SSH-Server?

    Gruss
       MichaelB

    1. Hallo!

      Habe gerade die Auflösung von meinem Provider bekommen:

      pscp wird nicht unterstüzt. Super, hat mich mal locker 2-3 Stunden Frust gekostet, man denkt ja meist es liegt an einem selbst ;-)

      Als Alternative könne man FTP per putty "tunneln". Weiß jemand wie das funktioniert? Ist das zu empfehlen bzw. eine vernünftige Alternative?

      Da ich eh nur Daten übertragen will, nicht unbedingt in Form einer Datei, käme für mich auch HTTP in Frage, nur kann mir jemand sagen ob PHP eine SSL-verschlüsselte Socket-Verbindung aufbauen kann?

      Viele Grüße
      Andreas

      1. Hallo!

        Habe gerade die Auflösung von meinem Provider bekommen:

        pscp wird nicht unterstüzt. Super, hat mich mal locker 2-3 Stunden Frust gekostet, man denkt ja meist es liegt an einem selbst ;-)

        Tja haben sie auch gesagt, WAS funktioniert (wenn ein SSH-Zugang angeboten wird, dann muss es ja auch Software geben die das nutzen kann). Und lass Dir auch mal sagen, WARUM es nicht funktioniert.
        Als alternativen SSH-Client könnte man ja auch den aus dem cygwin-Package nehmen (www.cygwin.com). Da hat man ja dann sozusagen das "Orginal". :-)

        Als Alternative könne man FTP per putty "tunneln". Weiß jemand wie das funktioniert? Ist das zu empfehlen bzw. eine vernünftige Alternative?

        hm .... müsste dann aber auch die Serverseite unterstützen ...

        Da ich eh nur Daten übertragen will, nicht unbedingt in Form einer Datei, käme für mich auch HTTP in Frage, nur kann mir jemand sagen ob PHP eine SSL-verschlüsselte Socket-Verbindung aufbauen kann?

        Naja ..... dazu sind ja nicht zwingend irgendwelche Vorraussetzung in der Serverseitigen Skriptsprache notwendig. Das ist mehr Konfigurationssache des Webservers.

        Grüsse
           MichaelB

        1. Hallo!

          Tja haben sie auch gesagt, WAS funktioniert (wenn ein SSH-Zugang angeboten wird, dann muss es ja auch Software geben die das nutzen kann). Und lass Dir auch mal sagen, WARUM es nicht funktioniert.

          putty selbst funktioniert, plink funktioniert, wahrscheinlich ist scp deaktiviert, wenn das denn so einfach geht.

          Als alternativen SSH-Client könnte man ja auch den aus dem cygwin-Package nehmen (www.cygwin.com). Da hat man ja dann sozusagen das "Orginal". :-)

          Putty ist schon OK, aber warum ist cygwin das original?

          Als Alternative könne man FTP per putty "tunneln". Weiß jemand wie das funktioniert? Ist das zu empfehlen bzw. eine vernünftige Alternative?
          hm .... müsste dann aber auch die Serverseite unterstützen ...

          das tut sie ja. Aber da weiß ich so gar nicht wie das funktioniert.
          Und ist das nicht sehr langsam? Bei mir kommt es auf schnelle Ausführung an.

          Da ich eh nur Daten übertragen will, nicht unbedingt in Form einer Datei, käme für mich auch HTTP in Frage, nur kann mir jemand sagen ob PHP eine SSL-verschlüsselte Socket-Verbindung aufbauen kann?
          Naja ..... dazu sind ja nicht zwingend irgendwelche Vorraussetzung in der Serverseitigen Skriptsprache notwendig. Das ist mehr Konfigurationssache des Webservers.

          Welches Webservers? Der den ich von PHP aus anspreche ode der auf dem PHP selbst installiert ist? Brauchen beide SSL? Kann das überhaupt funktionieren? Ich meine jetzt komplett automatisiert?

          Ich habe es mal wie folgt probiert:

          $fp = fsockopen("https://www.server.de", 443);
             fputs($fp, $strHeader);

          Aber das gab PHP-Fehler "Warning: Supplied argument is not a valid File-Handle resource", wenn ich es so probiere:

          $fp = fsockopen("www.server.de", 443);
             fputs($fp, $strHeader);

          bekomme ich einen "BAD REQUEST"(400) zurück, mit folgendem Hinweis:

          Reason: You're speaking plain HTTP to an SSL-enabled server port.
          Instead use the HTTPS scheme to access this URL, please.

          Hint: https://www.server.de:443/

          Was heißt das jetzt? Bzw. wie soll ich das sonst machen? Ich muß halt eine Ganze Menge Daten automatisiert vom einen auf den anderen Server bekommen, udn würde das schon ganz gerne verschlüsseln, pscp wäre so schön gewesen...

          Grüße
          Andreas

          1. Hallo,

            Tja haben sie auch gesagt, WAS funktioniert (wenn ein SSH-Zugang angeboten wird, dann muss es ja auch Software geben die das nutzen kann). Und lass Dir auch mal sagen, WARUM es nicht funktioniert.
            putty selbst funktioniert, plink funktioniert, wahrscheinlich ist scp deaktiviert, wenn das denn so einfach geht.

            Haben die das SO gesagt? Ich habe es so verstanden, dass nur pscp nicht funktioniert (warum auch immer) und nicht das scp generell deaktiviert ist.

            Als alternativen SSH-Client könnte man ja auch den aus dem cygwin-Package nehmen (www.cygwin.com). Da hat man ja dann sozusagen das "Orginal". :-)
            Putty ist schon OK, aber warum ist cygwin das original?

            Cygwin bildet eine UNIX-Umgebung unter Windows nach. Ein Neukompiliertes (Orginal-)SSH läuft dann halt unter Windows.

            Als Alternative könne man FTP per putty "tunneln". Weiß jemand wie das funktioniert? Ist das zu empfehlen bzw. eine vernünftige Alternative?
            hm .... müsste dann aber auch die Serverseite unterstützen ...
            das tut sie ja. Aber da weiß ich so gar nicht wie das funktioniert.
            Und ist das nicht sehr langsam? Bei mir kommt es auf schnelle Ausführung an.

            Wenn Du nicht weißt wie, dann lass es Dir von Deinem Provider erklären. Ob es schnell genug ist, kann nur ein Test zeigen.

            Da ich eh nur Daten übertragen will, nicht unbedingt in Form einer Datei, käme für mich auch HTTP in Frage, nur kann mir jemand sagen ob PHP eine SSL-verschlüsselte Socket-Verbindung aufbauen kann?
            Naja ..... dazu sind ja nicht zwingend irgendwelche Vorraussetzung in der Serverseitigen Skriptsprache notwendig. Das ist mehr Konfigurationssache des Webservers.
            Welches Webservers? Der den ich von PHP aus anspreche ode der auf dem PHP selbst installiert ist? Brauchen beide SSL? Kann das überhaupt funktionieren? Ich meine jetzt komplett automatisiert?

            Ja ich meinte eigentlich PHP auf dem betreffnen Webserver. Aber jetzt verstehe ich erst, was Du meinst. Automatisiert ist natürlich "schlecht". Und langsam wird es Zeit dass sich an dieser Stelle ein Experte zu Wort meldet.

            Ich habe es mal wie folgt probiert:

            $fp = fsockopen("https://www.server.de", 443);
               fputs($fp, $strHeader);

            Aber das gab PHP-Fehler "Warning: Supplied argument is not a valid File-Handle resource", wenn ich es so probiere:

            $fp = fsockopen("www.server.de", 443);
               fputs($fp, $strHeader);

            bekomme ich einen "BAD REQUEST"(400) zurück, mit folgendem Hinweis:

            Reason: You're speaking plain HTTP to an SSL-enabled server port.
            Instead use the HTTPS scheme to access this URL, please.

            Jo ... so gesehen brauchst Du wohl spezielle PHP-Funktionen für SSL. Aber da bin ich jetzt echt überfragt.

            Gruss
               MichaelB

            1. Hallo!

              So langsam verzweifele ich daran. Ich will doch nur automatisch Daten(nicht zwangsläufig _Dateien_) von einem Windows Rechner über das Internet auf einen Linux Rechner übertragen können. Ja, jetzt kommt wieder "Wechsel den Provider..." aber ich kenne kein Angebot welches das alles bietet was ich gerne hätte, bliebe nur ein eigener Server, aber ob das dann am Ende noch so sicher ist wenn _ich_ mich um Sicherheitslücken/Patches kümmern muss... ist wohl mehr als fraglich. Das hat meist seinen Grund wenn mein Provider bestimmte Features nicht bietet - nur das ich das Anfangs meist nicht überblicke, wenn ich das also selbst machen würde, wäre mir das nur aufgefallen, wenn es zu spät ist...

              Was ich Provider-Seitig zur Verfügung habe:

              SSH, aber kein Dateitransfer,
              SSH-Tunneling
              Apache SSL-Server
              FTP-Server
              PHP
              PERL

              Auf der Windows-Seite habe ich
              Apache-Server
              PHP
              PERL
              ...
              da bin ich im Prinzip recht frei.

              1. Möglichkeit:
              SSL-Übertragung, aber wie kann ich das automatisiert machen? Udn wie kann ich z.B. aus PHP eine socketverbindung zu einem SSL-Server herstellen?

              2. Möglichkeit:
              FTP über SSH-Tunnel, aber dann muß ich jedesmal erst Putty öffnen, und mich manuell einwählen, es soll aber Vollautomatisch möglich sein!
              Gibt es hier vielleicht eine Möglichkeit die SSH-Verbindung per Kommandozeile herzustellen?

              3. Möglichkeit:
              GPG/PGP-Verschlüsseln - per FTP/HTTP übertragen - GPG/PGP-Entschlüsseln, was aber wahrscheinlich recht langsam wäre, was sagt Ihr dazu?

              4. "Möglichkeit":
              vielleicht eher eine Idee: Gibt es eine Möglichkeit, genaus wie ich per plink ein Script remote ausführen kann und die Ausgabe SSH-Verschlüsselt zurückbekomme, das man das irgendwie in die andere Richtung macht? Also von Linux remote ein Script auf dem Windows-Rechner ausführen und die Ausgabe verschlüsselt zurückleiten? Das wäre das beste, da am schnellsten und einfachsten.
              Gibt es eine derartige Technik? Ob Jetzt SSL/SSH oder wie auch immer verschlüsselt, nur hauptsache überhaupt eine gute Verschlüselung.

              Vielleicht habt Ihr ja nch Ideen!

              Viele Grüße
              Andreas

              1. Hallo nochmal, :-)

                1. Möglichkeit:
                  FTP über SSH-Tunnel, aber dann muß ich jedesmal erst Putty öffnen, und mich manuell einwählen, es soll aber Vollautomatisch möglich sein!
                  Gibt es hier vielleicht eine Möglichkeit die SSH-Verbindung per Kommandozeile herzustellen?

                Ich kann hier eigentlich nur nochmal Cygwin erwähnen. Da hast Du alles was Du brauchst (SSH, Möglichkeiten zur Skriptsteuerung per Bash-Skript usw.).
                Dann sollte das auch mit dem tunneln klappten. Wie man das genau macht (mit Port-Forwarding und so) findet sich in der OpenSSH-Dokumentation.
                X11 Verbindungen lassen sich damit prima tunneln. FTP ist ungleich einfacher. Dürfte also kein Thema sein (ggf. passives FTP verwenden).

                1. Möglichkeit:
                  GPG/PGP-Verschlüsseln - per FTP/HTTP übertragen - GPG/PGP-Entschlüsseln, was aber wahrscheinlich recht langsam wäre, was sagt Ihr dazu?

                Käme auf ein Versuch an. Letzlich hängt das ja auch von dem Umfang der Dateien ab. Wenn Du auf dem Server eingeloggt bist, kannst Du es ja mal "von Hand" probieren eine Testdatei mit entsprechener (wie auch später vorgesehener) zu entschlüsseln.

                Was die Automatisation angeht. Wodurch soll denn der Automatisimus ausgelöst werden. Zeitgesteuert oder Ereignisgesteuert (wenn ereignisgesteuert, was für ein Ereignis)?

                Gruss
                   MichaelB

                1. Hallo!

                  Ich kann hier eigentlich nur nochmal Cygwin erwähnen. Da hast Du alles was Du brauchst (SSH, Möglichkeiten zur Skriptsteuerung per Bash-Skript usw.).

                  Oh! Gucke ich mir an! Aber wird mich auch nicht weiterbringen, da ich keinen Weg kenne, Daten "in richtung Server" zu übermitteln, sow wie plink das in die andere Richtung macht: Es führt remote ein Script aus und gibt die Ausgabe lokal aus. Wenn ich das auch anders herum hinbekommen würde wären die Problleme gelöst. Deteien kann ich nicht pber SSH übertragen, der Provider sagt, zur Zeit kennt er keien Möglichkeit, den SCP Traffic zu erfassen, so das Leute GB-Weise Daten verschieben könnten.
                  Aber meien Überlegung wäre, ob ichnicht unter win einen SSH-Server installiere(OpenSSH für Windows), und dann von Linux eine SCP Verbindung, oder sowas wie plink verwenden kann. Nur habe ich keine Ahnung wie man SSH von Linux aus verwendet! Hauptsache alles über Kommandozeile.

                  Dann sollte das auch mit dem tunneln klappten. Wie man das genau macht (mit Port-Forwarding und so) findet sich in der OpenSSH-Dokumentation.

                  Ich habe das bei Putty probiert, naja das ging weder mit aktiv, noch mit passiv Modus, näheres (Logs) weiter unten.

                  X11 Verbindungen lassen sich damit prima tunneln. FTP ist ungleich einfacher. Dürfte also kein Thema sein (ggf. passives FTP verwenden).

                  Was ist eine X11 Verbindung? Was ist X-Server?
                  Das Problem: der tatsächliche Port auf den dann connectet wird ist ja leider vorab nicht bekannt und bei den Clients die ich kenne auch nicht konfigurierbar, man müsste wohl einen grossen Range von ports gleichzeitig forwarden, naja.

                  1. Möglichkeit:
                    GPG/PGP-Verschlüsseln - per FTP/HTTP übertragen - GPG/PGP-Entschlüsseln, was aber wahrscheinlich recht langsam wäre, was sagt Ihr dazu?
                    Käme auf ein Versuch an. Letzlich hängt das ja auch von dem Umfang der Dateien ab. Wenn Du auf dem Server eingeloggt bist, kannst Du es ja mal "von Hand" probieren eine Testdatei mit entsprechener (wie auch später vorgesehener) zu entschlüsseln.
                    Was die Automatisation angeht. Wodurch soll denn der Automatisimus ausgelöst werden. Zeitgesteuert oder Ereignisgesteuert (wenn ereignisgesteuert, was für ein Ereignis)?

                  Beides. Regelmäßig per Zeitsteuerung, und auf Wunsch oder bei bestimmten Ereignissen zusätzlich.

                  Die Dateien sind nicht groß, es sind nur Datensätze aus 2 Datenbanken, die Synchronisiert werden sollen, da das möglichst oft passieren soll, wird ded Datenmenge unter normalen Umständen nicht wirklich bedeutend.

                  Viele Grüße
                  Andreas

                  1. Moin,

                    Deteien kann ich nicht pber SSH übertragen, der Provider sagt, zur Zeit kennt er keien Möglichkeit, den SCP Traffic zu erfassen, so das Leute GB-Weise Daten verschieben könnten.

                    Dann ist er wahrscheinlich inkompetent. In der momentanen Konfiguration wird dann also der ssh-Traffic nicht erfasst und du kannst problemarm Daten darüber schicken. Schliesslich werden die Bildschirmausgabe der entfernten Shell oder deine Tastendrücke auch so übermittelt. Es sollte möglich sein (mit dem Kommandozeilen-ssh) die Ausgabe eines lokalen Programms (zum Beispiel type) in ssh reinzupipen und auf der anderen Seite in ein Programm wie cat zu geben um es in eine Datei zu schreiben. (Nichts anderes macht übrigens auch SCP.)

                    Aber meien Überlegung wäre, ob ichnicht unter win einen SSH-Server installiere(OpenSSH für Windows), und dann von Linux eine SCP Verbindung, oder sowas wie plink verwenden kann. Nur habe ich keine Ahnung wie man SSH von Linux aus verwendet!

                    Genauso wie pscp auch: scp dateiname username@andererhost:pfadname

                    Ich habe das bei Putty probiert, naja das ging weder mit aktiv, noch mit passiv Modus, näheres (Logs) weiter unten.

                    Ja, FTP sollte sich nicht (so einfach) über ssh tunneln lassen, da es zwei Verbindungen benötigt: Eine für Kommandos und eine für Daten. Die Datenverbindung wird jedoch erst einige Zeit nach dem Einloggen zwischen zwei vorher nicht wirklich vorhersehbaren Ports aufgemacht. Du könntest dir selbst einen FTP-Client schreiben und ihn anweisen über bestimmte Ports (für die du vorher einen Tunnel eingerichtet hast) zu übertragen, aber das wird schwieriger.

                    X11 Verbindungen lassen sich damit prima tunneln. FTP ist ungleich einfacher. Dürfte also kein Thema sein (ggf. passives FTP verwenden).

                    Naja, X11 braucht genau eine Verbindung deren Port sogar noch bekannt ist. FTP ist da viel schwieriger.

                    Was ist eine X11 Verbindung? Was ist X-Server?

                    Darüber kannst du Bildschirminhalte und Maus/Tastaturereignisse schicken. Quasi wie Telnet oder SSH, bloß grafisch. (Ja, Microsoft kennt mit dem Terminalserver endlich eine ähnliche Sache, X hat hingegen schon funktioniert, als noch niemand mit Windows irgendwas anderes assoziert hat, als die durchsichtigen Dinger die man manchmal aufmacht, wenn es zu stickig wird.)

                    So, kommen wir zu HTTPS mit PHP: Das geht mit den eingebauten fopen-wrappern nicht. Du kannst
                    a) lynx mit HTTPS-Support installieren und es als externes Programm verwenden. Der Aufruf ist relativ einfach:

                    lynx -source https://bla/bla

                    gibt dir den Inhalt von https://bla/bla auf die Standardausgabe und du musst ihn nur noch in eine Datei umleiten.
                    b) Wenn du es kompliziert haben möchtest, müsstest du auch das externe Kommando
                    openssl s_client -connect hostname:portname
                    (muss wahrscheinlich extra installiert werden) benutzen können, um für dich die SSL-Sachen zu erledigen. Das würde dann ähnlich funktionieren, wie telnet bla 80 für normales HTTP. Das freilich mit PHP zusammen zu machen, ist wieder ein wenig schwieriger. (Oder weiss jemand auf Anhieb wie man bidirektionale Kommunikation mit einem anderen Prozess in PHP hinkriegt. Named Pipes werden wohl auf Windows-Systemen nicht gehen.)

                    --
                    Henryk Plötz
                    Grüße von der Ostsee

                    * Help Microsoft combat software piracy: Give Linux to a friend today! *