Frage Warum funktioniert die ssh-Agent-Weiterleitung nicht?


Auf meinem eigenen Computer, auf dem MacOSX läuft, habe ich das in ~ / .ssh / config

Host *
ForwardAgent yes
Host b1
ForwardAgent yes

b1 ist eine virtuelle Maschine, auf der Ubuntu 12.04 läuft. Ich schlage es so an:

ssh pupeno@b1

und ich werde eingeloggt, ohne nach einem Passwort gefragt zu werden, weil ich meinen öffentlichen Schlüssel bereits kopiert habe. Aufgrund der Weiterleitung, sollte ich in der Lage sein, ssh zu pupeno @ b1 von b1 und es sollte funktionieren, ohne mich nach einem Passwort zu fragen, aber es tut es nicht. Es fragt mich nach einem Passwort.

Was vermisse ich?

Dies ist die ausführliche Ausgabe des zweiten ssh:

pupeno@b1:~$ ssh -v pupeno@b1
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to b1 [127.0.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/pupeno/.ssh/id_rsa type -1
debug1: identity file /home/pupeno/.ssh/id_rsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_dsa type -1
debug1: identity file /home/pupeno/.ssh/id_dsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 35:c0:7f:24:43:06:df:a0:bc:a7:34:4b:da:ff:66:eb
debug1: Host 'b1' is known and matches the ECDSA host key.
debug1: Found key in /home/pupeno/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pupeno/.ssh/id_rsa
debug1: Trying private key: /home/pupeno/.ssh/id_dsa
debug1: Trying private key: /home/pupeno/.ssh/id_ecdsa
debug1: Next authentication method: password
pupeno@b1's password:

45
2017-07-03 16:32


Ursprung




Antworten:


Es stellt sich heraus, dass mein Schlüssel nicht im Agenten war, und dies hat es behoben:

OS X:

ssh-add -K

Linux / Unix:

ssh-add -k

Sie können geladene Schlüssel auflisten mit:

ssh-add -l

73
2017-07-03 16:48



Beachten Sie, dass ssh-add -K ist spezifisch für OS X. - Roger Lipscombe


Ich hatte ein Problem mit dem sshd-Server, der die Agent-Weiterleitungsanforderung ablehnte, da in / tmp kein Platz mehr vorhanden war. Dies lag daran, dass sshd Socket in / tmp erstellen muss. Die Reinigung der Festplatte hat mein Problem gelöst.

ssh -v sagte damals:

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: No space left on device

5
2018-05-22 11:02



Ich hatte das gleiche Problem, nur die Berechtigungen waren falsch auf / tmp. VIELEN DANK!! - nevyn


  1. Überprüfen Sie, ob Ihre ./ssh/id_rsa .ssh/id_dsa  .ssh/id_ecdsa Dateien haben die richtigen Berechtigungen, die Ihrem Benutzer gehören und 600 sein sollten.

  2. Überprüfen Sie, ob Sie den richtigen öffentlichen Schlüssel aktiviert haben pupeno/.ssh/authorized_keys auf b1, und überprüfen Sie, ob authorized_keys hat einen Zeilenumbruch am Ende des Schlüssels.

  3. Überprüfen Sie, ob Sie ssh-agent ausgeführt haben, versuchen Sie, Schlüssel über zu laden ssh-add

  4. Probieren Sie die GSSAPI-basierte Authentifizierung und Weiterleitung mit ssh -K


5
2017-07-03 16:41



Die Erlaubnis der Schlüssel ist in Ordnung und der Schlüssel in authorized_keys ist in Ordnung (sonst würde ich Schwierigkeiten haben, mich an erster Stelle zu verbinden). - pupeno
Hast du ssh-agent ausgeführt? Was passiert, wenn du ein ssh-add machst, dann ssh -A Pupeno @ b1 und dann ssh pupeno @ b1? - Daniel Prata Almeida
Warum aktualisieren Sie die Antwort nicht, um ssh-add -K zu erwähnen, und ich akzeptiere deins anstelle von mir (da die Informationen fast gleichzeitig gepostet wurden). - pupeno


Ein weiterer möglicher Grund ist die gemeinsame Nutzung von Verbindungen: Möglicherweise ist der andere Host bereits angemeldet, ohne dass die Agentenweiterleitung und die Verbindungsfreigabe aktiviert sind. Die zweite Anmeldung mit ssh -A (oder äquivalent in der Konfigurationsdatei angegeben) über die gemeinsam genutzte Verbindung ignorieren ignoriert -A Flagge. Erst nach dem vollständigen Abmelden oder Deaktivieren der Verbindungsfreigabe für die zweite Anmeldung funktioniert die Agentenweiterleitung.


4
2017-08-14 18:43





Zum Wohle anderer Googler, die ebenfalls zu dieser Frage gekommen sind:

Falscher Whitespace in einer ~ / .ssh / config-Datei kann auch zu Kopfkratzern führen.

Kürzlich habe ich einem meiner Mitarbeiter geholfen, der das hatte:

# incorrect
host foobar ForwardAgent yes

an Stelle von:

# correct
host foobar
  ForwardAgent yes

Ich bin auch auf Instanzen gestoßen, bei denen der fehlende Einzug der Direktiven unter der Liste der Hosts einen Unterschied in der Funktionalität gemacht hat, obwohl dies nicht der Fall ist.


1
2017-07-18 20:22





Fügen Sie der .ssh / config Datei folgende Zeilen hinzu

  Host **Server_Address**
     ForwardAgent yes

Fügen Sie den Schlüssel zum SSH-Agenten hinzu

 ssh-add -K

Stellen Sie eine Verbindung zum Remoteserver her

ssh -v **username**@**Server_Address**

Führen Sie den Verbindungstest mit GitHub aus

ssh -T git@github.com

Führen Sie ls Remote-Test gegen das gezielte Git-Repository aus

git ls-remote --heads git@github.com:**account**/**repo**.git

0
2017-08-17 01:39