2012-04-01 175 views
31

注意:我不是新手,我已經做了這麼多次,但由於某種原因,今天它決定不工作。爲什麼我的SSH密鑰不能連接到github?

當我嘗試通過SSH連接到github或試圖克隆repo時,即使在重新創建ssh密鑰並將其添加到我的帳戶中的「SSH密鑰」後,我仍然收到Permission denied (publickey).錯誤消息。

這是我想今天做十倍沒有成功:

  1. 讓使用ssh-凱基的關鍵。
  2. 使用Gedit或Notepad ++打開〜/ .ssh/id_rsa.pub並複製內容。
  3. 轉到上github.com
  4. 帳戶設置
  5. 轉到SSH密鑰
  6. 點擊添加鍵按鈕。
  7. 給鑰匙一個標題
  8. 將鑰匙粘貼到鑰匙箱中。
  9. 保存密鑰(輸入我的github密碼進行驗證)。

現在,當我嘗試做ssh github.com它只是不會工作....世界上有什麼?我現在太累了還是錯過了一些東西?

下面是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,ecdsa-sha[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). 
+0

如果您向下滾動該指導頁面,它會告訴您使用'ssh-add'添加密鑰。是你做的嗎? – 2012-04-01 00:28:45

+1

你試圖ssh到github,或推/拉到一個回購與SSH認證? – YenTheFirst 2012-04-01 00:29:20

+0

如果你在Windows上,你是否定義了'%HOME%'?無論如何,'ssh -vvv github.com'將有助於:http://stackoverflow.com/questions/6018551/heroku-push-master-ssh-problem/6018945#6018945和http://stackoverflow.com/questions/922210 /無法使用git-push-master-to-github/922461#922461 – VonC 2012-04-01 00:49:06

回答

34

GitHub ssh setup提到測試你的GitHub連接:

$ ssh -T [email protected] 

後面的ssh uri syntax(在 「this answer」 還說明)。

但是你做的事:

ssh github.com 

(沒有任何用戶)。在這種情況下,SSH恢復到SCP syntax,其依賴於一個~/.ssh/config文件,具有部分「github.com」,列出:

  • 用戶
  • 主機名
  • (和任選的公共密鑰的位置,但默認情況下它會嘗試~/.ssh/id_rsa.pub
1

的GitHub最近接受所有鍵的審計輸出。轉到the key section of your account重新批准它。

+0

我已經批准/刪除了所有的SSH密鑰。我現在添加新的密鑰(再次看到我的問題),但它不會工作...我已經做了很多次,沒有問題。 – trusktr 2012-04-01 04:36:39

17

創建配置文件(~/.ssh/config)後,它工作。這是我必須把它放在:

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

感謝@VonC爲我帶領在那裏的評論。

我不明白爲什麼我以前從未需要這個。

+0

如果您的ssh地址遵循SCP語法,您將需要該信息請參閱我的答案以獲取更多詳細信息。 – VonC 2012-04-01 10:44:47

+1

謝謝,這個爲我工作。 :) – Emmy 2013-03-23 21:09:36

+1

這救了我!經過幾個小時的嘗試。謝謝,哥們! – 2016-07-24 00:23:14

39

我有一個類似的問題,github沒有使用我的SSH密鑰。我總是必須輸入我的用戶名和密碼。

我一直在尋找的.git/config中,在[遠程 「原點」]有:

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

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

我改了行成

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

然後它工作。

+3

好的。在不編輯配置文件的情況下完成此操作的git方式如下:1.'git remote',它將列出所有遠程存儲庫。在我的情況下,它是'origin' 2.'git remote remove <你找到的遠程名稱>''3. git remote add origin [email protected]:username/repository- name.git' – nomad 2016-04-12 22:19:39

+0

除了@nomad的建議,你還需要在下一次推動時使用'--set-upstream origin master'(或者在之前) – Kyrstellaine 2017-05-31 21:31:10