wake-up-neo.com

Warum funktioniert mein SSH-Schlüssel nicht, um eine Verbindung zu Github herzustellen?

Anmerkung: Ich bin kein Neuling, und ich habe das schon tausendmal gemacht, aber aus irgendeinem Grund hat es heute beschlossen, nicht zu arbeiten.

Ich erhalte die Fehlermeldung Permission denied (publickey)., wenn Sie versuchen, über SSH eine Verbindung zu Github herzustellen, oder wenn Sie versuchen, ein Repo zu klonen, auch nachdem Sie den SSH-Schlüssel erneut erstellt und ihn zu "SSH-Schlüssel" in meinem Konto hinzugefügt haben.

Das habe ich versucht, zehnmal heute ohne Erfolg zu tun:

  1. mach einen Schlüssel mit ssh-keygen.
  2. Öffnen Sie ~/.ssh/id_rsa.pub mit Gedit oder Notepad ++ und kopieren Sie den Inhalt.
  3. Gehen Sie zu Kontoeinstellungen auf github.com
  4. Gehen Sie zu den SSH-Schlüsseln
  5. Klicken Sie auf die Schaltfläche Schlüssel hinzufügen.
  6. gib dem Schlüssel einen Titel
  7. fügen Sie den Schlüssel in das Schlüsselfeld ein.
  8. Speichern Sie den Schlüssel (geben Sie zur Bestätigung mein Github-Passwort ein).

Und jetzt, wenn ich versuche, ssh github.com zu tun, funktioniert es einfach nicht ... Was in der Welt? Bin ich gerade zu müde oder vermisse ich etwas?

Hier ist die Ausgabe von ssh -vvv github.com

OpenSSH_5.9p1, OpenSSL 1.0.0f 4 Jan 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/trusktr/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/trusktr/.ssh/id_rsa type 1
debug1: identity file /home/trusktr/.ssh/id_rsa-cert type -1
debug1: identity file /home/trusktr/.ssh/id_dsa type -1
debug1: identity file /home/trusktr/.ssh/id_dsa-cert type -1
debug1: identity file /home/trusktr/.ssh/id_ecdsa type -1
debug1: identity file /home/trusktr/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2
debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for Host "github.com" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 122/256
debug2: bits set: 510/1024
d    ebug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server Host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug3: load_hostkeys: loading entries for Host "github.com" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for Host "207.97.227.239" from file "/home/trusktr/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'github.com' is known and matches the RSA Host key.
debug1: Found key in /home/trusktr/.ssh/known_hosts:16
debug2: bits set: 497/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/trusktr/.ssh/id_rsa (0x14cce60)
debug2: key: [email protected] (0x14ce2b0)
debug2: key: /home/trusktr/.ssh/id_dsa ((nil))
debug2: key: /home/trusktr/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/trusktr/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: [email protected]
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/trusktr/.ssh/id_dsa
debug3: no such identity: /home/trusktr/.ssh/id_dsa
debug1: Trying private key: /home/trusktr/.ssh/id_ecdsa
debug3: no such identity: /home/trusktr/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
43
trusktr

Das GitHub ssh-Setup erwähnt das Testen Ihrer GitHub-Verbindung mit: 

$ ssh -T [email protected]

Das folgt der ssh uri-Syntax (auch in " diese Antwort " dargestellt).

Du hast es aber getan:

ssh github.com

(ohne Benutzer) In diesem Fall kehrt ssh zur SCP-Syntax zurück, die sich auf eine ~/.ssh/config-Datei mit einem Abschnitt "github.com" stützt.

  • der Benutzer
  • der hostname
  • (und optional die Position des öffentlichen Schlüssels, standardmäßig wird jedoch ~/.ssh/id_rsa.pub versucht)

Bearbeiten Sie Ihre .git/config -Datei nicht direkt, um sie in eine normale SSH-URL zu ändern (siehe unten).
Verwenden Sie den Befehl git remote set-url :

git remote set-url Origin [email protected]:username/repo.git
43
VonC

Ich hatte ein ähnliches Problem, github verwendete meinen SSH-Schlüssel nicht. Ich musste immer meinen Benutzernamen und mein Passwort eingeben.

Ich habe mir .git/config angesehen, unter [remote "Origin"] gab es:

    url = http://github.com/path/to/repository

oder

    url = https://github.com/path/to/repository

Ich habe die Zeile geändert

    url = ssh://[email protected]/path/to/repository

und dann hat es funktioniert.

60
Artisan72

Nach dem Erstellen einer Konfigurationsdatei (~/.ssh/config) hat es funktioniert. Das musste ich hineinstecken:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Danke an @VonC, dass Ihr mich dort in den Kommentaren geführt habt.

Ich verstehe nicht, warum ich das noch nie gebraucht habe.

24
trusktr

Wenn es funktioniert für andere Repositorys, aber nicht speziell, dann verwenden Sie wahrscheinlich die falsche Remote-URL (d. H. https anstelle von [email protected])

  1. Überprüfen Sie zunächst, ob Ihre Verbindung mit git ssh funktioniert:

    ssh -T [email protected]
    
  2. Wenn es funktioniert, überprüfen Sie Ihre Fernbedienung:

    git remote -v
    

    es wird so etwas angezeigt:

    Origin  https://github.com/username/repo(fetch)
    Origin  https://github.com/username/repo(Push)
    
  3. Wenn die Fernbedienungen am Anfang https angeben, müssen Sie diese URL mit ändern:

    git remote set-url Origin [email protected]:usertname/repo.git
    

hier für weitere Details.

3
toto_tico

GitHub hat vor kurzem ALLE Schlüssel überprüft. Gehen Sie zu dem Schlüsselbereich Ihres Kontos , um es erneut zu genehmigen.

1
Alan Williams

Für ssh müssen Sie die URL ändern. Öffnen Sie die git config-Datei und ändern Sie die URL in

url = [email protected]:username/repository.git
0
orangesherbert