libssh2 - Agentenweiterleitung funktioniert nicht

741
Niks

Ich verwende libssh2Bibliotheken für SSH-Verbindungen in meiner mobilen Anwendung. Hier möchte ich den Agent ForwardingSupport nutzen .

Ich habe die gleiche Prozedur befolgt, wie sie hier in LibSSH2 Agent Forwarding beschrieben wurde .

Ich bin in der Lage, Agenten erfolgreich zu erstellen, aber wenn ich versuche, eine Verbindung herzustellen libssh2_agent_connect(agent), wird der Fehler -39 angezeigt LIBSSH2_ERROR_BAD_USE .

Nun, ich überprüfe dasselbe mit dem MAC OSX-Terminal und es funktioniert gut. Bitte schlagen Sie vor, wenn etwas nicht stimmt.

So versuche ich einmal erfolgreich eine Verbindung herzustellen

struct libssh2_agent_publickey *identity, *prev_identity = NULL; int rc; agent = libssh2_agent_init(session);  if (!agent) { fprintf(stderr, "Failure initializing ssh-agent support\n"); rc = 1; }  int temp=libssh2_agent_connect(agent); if (temp) { fprintf(stderr, "Failure connecting to ssh-agent\n"); rc = 1; } 

Stimmt hier etwas nicht? bitte vorschlagen.

2
Haben Sie einen Fehler oder eine ausführliche Ausgabe. "nicht funktionieren" ist eine recht weit gefasste Definition. Jakuje vor 9 Jahren 0
ohh Entschuldigung, ich habe diesen Teil vermisst, jetzt in Frage gestellt und auch hier erwähnt. Wenn ich versuche, es mit libssh2_agent_connect (agent) zu verbinden, wird der Fehler -39 LIBSSH2_ERROR_BAD_USE angezeigt. Niks vor 9 Jahren 0
Nur um auf Nummer sicher zu gehen. Haben Sie einen Agenten am Laufen? Jakuje vor 9 Jahren 0
Ja, es läuft. Ich bin in der Lage, SSH ohne Umschreiben / Eingabe einer Paraphrase zu verwenden, wenn ich versuche, SSH mit meinem anderen Computer zu sägen, auf dem ich den öffentlichen Schlüssel kopiert habe, den ich dem Agenten hinzugefügt habe. Niks vor 9 Jahren 0
@ Jakuje eine Idee? Niks vor 9 Jahren 0
Ich sehe, dass der Agent läuft. Wo fügen Sie dem Agenten die Schlüssel hinzu? Jakuje vor 9 Jahren 0
Ich habe Schlüssel von meinem Mac-Terminal hinzugefügt. Ich versuche es von meiner iOS-App mit der libssh2-Bibliothek. Mit libssh2 kann ich mich nicht mit dem Agenten verbinden Niks vor 9 Jahren 0
Ja, ich verstehe, aber wie fügen Sie die Schlüssel in der iOS-App hinzu? Jakuje vor 9 Jahren 0
Während ich mich mit dem Server verbinde, verwende ich einen Schlüssel wie 'const char * privatekey = [_privateKey cStringUsingEncoding: NSUTF8StringEncoding]; libssh2_userauth_publickey_fromfile (Sitzung, Benutzername, NULL, privatekey, Kennwort); `Sobald die Verbindung erfolgreich hergestellt wurde, versuche ich, den Agenten mit dieser Sitzung und demselben Benutzer zu verbinden. Niks vor 9 Jahren 0

1 Antwort auf die Frage

1
Sandip Bhattacharya

Aus dem Code unter https://github.com/libssh2/libssh2/blob/master/src/agent.c

path = getenv("SSH_AUTH_SOCK"); if (!path) return _libssh2_error(agent->session, LIBSSH2_ERROR_BAD_USE, "no auth sock variable"); 

Dieser Fehler tritt also offensichtlich auf, weil die Umgebungsvariable nicht korrekt auf den Agent-Socket verweist. Lassen Sie Ihren Code getenv("SSH_AUTH_SOCK")im Fehlerfall den Wert von drucken, um dies zu bestätigen.

Vielen Dank für die Rückmeldung, Ja Pfad ist NULL der Variablen. Mein SSH-Client ist Mac OSX. Kann es bei Unix Unterschiede geben? Was ich mache, ist zuerst eine Verbindung mit meinem PC und dann fange ich an, eine Verbindung mit dem Agenten mit demselben Benutzer und derselben Sitzung herzustellen. Ich kann einen Agenten erstellen, kann aber keine Verbindung herstellen. Können Sie mir bitte einen NULL-Wert für den Pfad der Umgebungsvariablen vorschlagen, was falsch sein kann oder ich mit falschem Fluss arbeite? Vielen Dank Niks vor 9 Jahren 0
Um wieder klar zu sein, Sie haben Ihre Schlüssel auf Ihrem Mac-Client, Sie fügen die Schlüssel zum ssh-Agenten hinzu, der in Ihrem Mac-Terminal ausgeführt wird, und ssh-ing zum PC. Und dann finden Sie Ihren SSH_AUTH_SOCK null in Ihrem PC in derselben Shell? In diesem Fall funktioniert die Weiterleitung von Agenten wahrscheinlich nicht gut. Der Versuch, einen "-A" -Parameter hinzuzufügen, wenn Sie mit dem PC verbunden sind. Wenn es immer noch nicht funktioniert, ist die Agentenweiterleitung wahrscheinlich auf dem SSH-Server Ihres PCs deaktiviert. Ändere die Konfiguration dort und starte sshd neu. Versuchen Sie es erneut mit der SSH und sehen Sie. Sandip Bhattacharya vor 9 Jahren 0
Ich sshing von meiner App auf dem gleichen Computer (Mac-Client), auf dem ich den Schlüssel zum SSH-Agenten hinzugefügt habe. Ja, dann ist der Pfad SSH_AUTH_SOCK NULL. Ich habe es von meinem Mac-Terminal aus versucht und die Weiterleitung funktioniert. Ich habe den publick-Schlüssel auf meinen anderen (zweiten) Mac-PC kopiert und versucht, von meinem Mac-Client (erster) aus zu ssh zu wechseln, und es erfolgt keine Abfrage nach der Passphrase dieses Schlüssels, wenn die Weiterleitung von Agenten funktioniert. Aber einige von der App könnten sein, dass mein Fluss falsch ist oder ich bekomme keinen genauen Grund. Niks vor 9 Jahren 0