Fehler beim Start von SSH

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fehler beim Start von SSH

    Hallo zusammen,

    ich versuche mich gerade an einer SSH-Software, um vom iPhone aus unterwegs auf zu wartende Server zugreifen zu können.
    Dazu verwende ich das im OS X-Basissystem beiliegende SSH-Programm, weil ich ein wenig ratlos war, wie ich vorhandene Bibliothek (z.B. libssh2) gegen das iPhone kompilieren und meiner Anwendung beilegen kann.

    Um das SSH-Programm zu starten verwende ich NSTask, wie von Apple empfohlen (siehe Code unten). Das funktioniert in soweit gut, als dass das Programm zumindest startet, wenn ich keine Parameter zu übergeben versuche. Wenn ich allerdings den Aufruf "ssh -l <username> <host> -T" starte, so startet der Debugger in Xcode, der allerdings scheinbar nicht in die Anwendung reinkommt, zumindest sehe ich nur die gdb-Konsole:
    This GDB was configured as "i386-apple-darwin".warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
    warning: Unable to read symbols from "UIKit" (not yet mapped into memory).

    Theoretisch sollte ich zumindest die Frage nach dem RSA-Fingerprint sehen. Aber das bleibt aus irgendeinem Grund aus stattdessen sehe ich genanntes Bild in der Konsole von Xcode.

    Quellcode

    1. // Now let's start SSH
    2. NSTask *sshTask = [[NSTask alloc] init];
    3. NSPipe *inputPipe = [NSPipe pipe];
    4. NSPipe *outputPipe = [NSPipe pipe];
    5. NSFileHandle *outputFHandle = [outputPipe fileHandleForReading];
    6. NSFileHandle *inputFHandle = [inputPipe fileHandleForWriting];
    7. NSData *outputData = nil;
    8. // Set the Pipes as Input and Output
    9. [sshTask setStandardInput:inputPipe];
    10. [sshTask setStandardOutput:outputPipe];
    11. [sshTask setStandardError:outputPipe];
    12. [sshTask setLaunchPath:sshBinary];
    13. [sshTask setArguments:[NSArray arrayWithObjects:@"-l", username, @"-T", hostname, nil]];
    14. NSLog(@"Task set up.\n"); // dieser Punkt wird noch erreicht!
    15. // Make it running.
    16. [sshTask launch];
    17. // Change to Terminal view
    18. [tabController setSelectedIndex:2];
    19. [terminalView setText:nil];
    20. while ((outputData = [outputFHandle availableData]) && [outputData length]) {
    21. NSString *dataString = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding];
    22. [terminalView setText:[[NSString stringWithString:[terminalView text]] stringByAppendingString:dataString]];
    23. [dataString release];
    24. }
    25. // Okay, we're finished
    26. [sshTask release];
    Alles anzeigen


    Kann mir jemand einen Anhaltspunkt dafür geben, wo ich den Fehler zu suchen habe?

    Grüße,
    Christopher
  • Ich denke mal das sind zwei Probleme.

    Die Fehlermeldung mit gdb sagt das Dein Mac UIKit.framwork nicht findet (file not found!). Dort steht es ja aber auch nicht. Evtl. ist irgendeine Projekteinstellung beschädigt. Denn das sollte unter

    /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/Library/Frameworks/UIKit.framework stehen.

    Noch ein Problem mit ssh in einem NSTask - die Fragen nach RSA und Passwort werden manchmal auf die Konsole oder stderr geschickt (/dev/tty) und nicht stdin/stdout. Und das Passwort wird auf der Konsole erwartet.

    Ich weiss nicht ob Du NSStream (developer.apple.com/documentat…pple_ref/doc/uid/20002272) auf dem iPhone verwenden kannst. Das kapselt den kompletten SSH-Kram.

    -- hns
  • Hi,
    ich habe eigentlich alle Einstellungen geprüft und nirgendwo schien mir was auffällig zu sein. In den Eigenschaft des Frameworks steht auch:
    Path: System/Library/Frameworks/UIKit.framework
    Full Path: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/System/Library/Frameworks/UIKit.framework

    Hab es auch noch mal neu vom Finder her reingezogen. Die Einstellung für das SDK und die Build-Umgebung ist eigentlich auch richtig eingestellt. :(

    Theoretisch wird ja auch stderr ge-pipe-t über

    Quellcode

    1. [sshTask setStandardError:outputPipe];

    Und theoretisch sollte ich ja trotzdem irgendwo was sehen, und keinen Debugger starten lassen.

    Ich guck mir NSStream mal an, danke.

    Grüße,
    Christopher