为什么我的SSH密钥不能连接到github?

问题描述:

注意:我不是新手,我已经做了这么多次,但由于某种原因,今天它决定不工作。为什么我的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

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

的GitHub最近接受所有键的审计输出。转到the key section of your account重新批准它。

+0

我已经批准/删除了所有的SSH密钥。我现在添加新的密钥(再次看到我的问题),但它不会工作...我已经做了很多次,没有问题。 – trusktr 2012-04-01 04:36:39

创建配置文件(~/.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

我有一个类似的问题,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