突然有一天,你又注册了一个帐号 xiaohuzige,也走了一遍上面的流程,发现死活也连接不上,服务器总是提示:You have no permission to access this repo,这是怎么回事呢?
这个时候,你可以输入这个命令,看看是哪个环节出了问题:
➜ ~ ssh -vT git@github.com OpenSSH_6.9p1, LibreSSL 2.1.7 debug1: Reading configuration data /Users/barretlee/.ssh/config debug1: /Users/barretlee/.ssh/config line 2: Applying options for * debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 20: Applying options for * debug1: /etc/ssh/ssh_config line 102: Applying options for * debug1: Connecting to github.com [192.30.252.128] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/barretlee/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.9 debug1: Remote protocol version 2.0, remote software version libssh-0.7.0 debug1: no match: libssh-0.7.0 debug1: Authenticating to github.com:22 as 'git' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ssh-rsa SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 debug1: Host 'github.com' is known and matches the RSA host key. debug1: Found key in /Users/barretlee/.ssh/known_hosts:4 Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts. 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 debug1: Next authentication method: publickey debug1: Trying private key: /Users/barretlee/.ssh/id_rsa debug1: Trying private key: /Users/barretlee/.ssh/id_dsa debug1: Trying private key: /Users/barretlee/.ssh/id_ecdsa debug1: Trying private key: /Users/barretlee/.ssh/id_ed25519 debug1: No more authentication methods to try. Permission denied (publickey).
不加 v 参数,输出的内容很简洁:
➜ ~ ssh -T git@github.com Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts. Permission denied (publickey).
好吧,我知道你看不懂上面一长串的内容,也没心情看下去,但是你可以把焦点落到重复的那几段:
debug1: ... debug1: xxx, No such file or directory debug1: ... debug1: Trying private key: /Users/barretlee/.ssh/xxx debug1: ...
之前我们提到了 Protocal Version 1 和 Version 2,不同的版本号,默认的私钥地址不一样,所以程序会不断去尝试寻找默认的地址,如果没找到,最后会提示,授权失败,禁止访问。
### default for all ## Host * ForwardAgent no ForwardX11 no ForwardX11Trusted yes User nixcraft Port 22 Protocol 2 ServerAliveInterval 60 ServerAliveCountMax 30