Warum funktioniert die Weiterleitung des SSH-Agenten nicht?

57

Auf meinem eigenen Computer, auf dem MacOSX ausgeführt wird, befindet sich dies in ~ / .ssh / config

Host *
ForwardAgent yes
Host b1
ForwardAgent yes

b1 ist eine virtuelle Maschine, auf der Ubuntu 12.04 ausgeführt wird. Ich ssh dazu so:

ssh pupeno@b1

und ich werde angemeldet, ohne nach einem Passwort gefragt zu werden, da ich meinen öffentlichen Schlüssel bereits kopiert habe. Aufgrund der Weiterleitung sollte es mir möglich sein, von b1 zu pupeno @ b1 zu ssh und es sollte funktionieren, ohne mich nach einem Passwort zu fragen, aber das 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:
pupeno
quelle

Antworten:

94

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

OS X :

ssh-add -K

Linux / Unix :

ssh-add -k

Sie können geladene Schlüssel auflisten mit:

ssh-add -l

ssh-add -L # for more detail
pupeno
quelle
5
Beachten Sie, dass dies ssh-add -Knur für OS X gilt.
Roger Lipscombe
Müssen Sie dies bei jedem Neustart tun?
Krauser,
8
  1. Überprüfen Sie, ob Ihre ./ssh/id_rsa .ssh/id_dsa .ssh/id_ecdsaDateien über die richtigen Berechtigungen verfügen, die Ihrem Benutzer gehören und geändert werden sollen 600.

  2. Stellen Sie sicher, dass Sie den richtigen öffentlichen Schlüssel auf pupeno/.ssh/authorized_keysb1 aktiviert haben, und überprüfen Sie, ob authorized_keysam Ende des Schlüssels ein Zeilenumbruch vorliegt.

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

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

Daniel Prata Almeida
quelle
Die Erlaubnis der Schlüssel ist in Ordnung und der Schlüssel in authorized_keys ist in Ordnung (ansonsten hätte ich wahrscheinlich Probleme, eine Verbindung herzustellen).
Schüler
Hattest du ssh-agent am laufen? Was passiert, wenn Sie ssh-add, dann ssh -A pupeno @ b1 und dann ssh pupeno @ b1 ausführen?
Daniel Prata Almeida
Warum aktualisieren Sie die Antwort nicht, um ssh-add -K zu erwähnen, und ich akzeptiere Ihre anstelle meiner (da die Informationen fast gleichzeitig gepostet wurden).
Schüler
6

Ich hatte ein Problem mit dem sshd-Server, der die Agentenweiterleitungsanforderung ablehnte, weil in / tmp kein Platz mehr vorhanden war. Dies lag daran, dass sshd einen Socket in / tmp erstellen muss. Durch Bereinigen der Festplatte wurde das Problem behoben.

ssh -v sagte damals:

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: No space left on device
BartBiczBoży
quelle
1
Ich hatte das gleiche Problem, nur die Berechtigungen auf / tmp waren falsch. VIELEN DANK!!
Nevyn
6

Ein weiterer möglicher Grund ist die Verbindungsfreigabe: Möglicherweise ist einer bereits auf dem anderen Host angemeldet, ohne dass die Agentenweiterleitung und die Verbindungsfreigabe aktiviert sind. Bei der zweiten Anmeldung mit ssh -A(oder gleichwertig in der Konfigurationsdatei angegeben) über die gemeinsam genutzte Verbindung wird das -AFlag unbemerkt ignoriert . Erst nachdem Sie sich vollständig abgemeldet oder die Verbindungsfreigabe für die zweite Anmeldung deaktiviert haben, funktioniert die Agentenweiterleitung.

W.Mann
quelle
2

Zum Nutzen anderer Googler, die ebenfalls auf diese Frage gekommen sind:

Ein falsches Leerzeichen in einer ~ / .ssh / config-Datei kann ebenfalls zu Kopfkratzern führen.

Ich habe kürzlich einem meiner Kollegen geholfen, der folgendes hatte:

# incorrect
host foobar ForwardAgent yes

an Stelle von:

# correct
host foobar
  ForwardAgent yes

Ich habe auch Fälle erlebt, in denen die fehlende Einrückung der Anweisungen in der Liste der Hosts die Funktionalität beeinflusste, obwohl dies nicht der Fall sein sollte.

Dale Anderson
quelle
0

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

  Host **Server_Address**
     ForwardAgent yes

Fügen Sie dem SSH-Agenten einen Schlüssel hinzu

 ssh-add -K

Stellen Sie eine Verbindung zum Remote-Server her

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

Verbindungstest gegen GitHub durchführen

ssh -T [email protected]

Führen Sie den Remote-Test für das Ziel-Git-Repository aus

git ls-remote --heads [email protected]:**account**/**repo**.git
Tahsin Turkoz
quelle