关于ssh连接主机,git连接github失败的问题:ssh -T git@github.com&&Permission denied (publickey)

关于ssh连接主机,git连接github失败的问题
	问题:$ ssh -T git@github.com
		Permission denied (publickey)

解析:
	1、可以看出问题出在publickey(公钥)
	2、接着ssh -T -v git@github.com 看下具体信息

penSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/sunny/.ssh/id_rsa type -1
debug1: identity file /home/sunny/.ssh/id_rsa-cert type -1
debug1: identity file /home/sunny/.ssh/id_dsa type -1
debug1: identity file /home/sunny/.ssh/id_dsa-cert type -1
debug1: identity file /home/sunny/.ssh/id_ecdsa type -1
debug1: identity file /home/sunny/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1+github5
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1+github5 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
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: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/sunny/.ssh/known_hosts:1
debug1: ssh_rsa_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
debug1: Next authentication method: publickey
debug1: Trying private key: /home/sunny/.ssh/id_rsa
debug1: Trying private key: /home/sunny/.ssh/id_dsa
debug1: Trying private key: /home/sunny/.ssh/id_ecdsa
debug1: No more authentication methods to try.
Permission denied (publickey).

	3、可以发现在一下几行出现问题:
	debug1: Next authentication method: publickey
 	debug1: Trying private key: /home/sunny/.ssh/id_rsa
  	debug1: Trying private key: /home/sunny/.ssh/id_dsa
   	debug1: Trying private key: /home/sunny/.ssh/id_ecdsa
    debug1: No more authentication methods to try.
	Permission denied (publickey).

	4、发现它一直在查找id_rsa、id_dsa、id_ecdsa这三个文件,然后就不尝试其他了;
	5、我们查看下 ~/.ssh文件夹下的文件:ls ~/.ssh
		github  github.pub ...
	这里没有第4步出现的文件,github是创建ssh-key时输入的名字

	6、现在我们让~/.ssh文件夹下,还原当初没有改时的名字id_rsa
		cp github id_rsa && cp gitbub.pub id_rsa.pub

	7、再次尝试连接:ssh -T git@github.com
	Hi xxx ! You've successfully authenticated, but GitHub does not provide shell access.成功。
总结:
	运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试

转载请注明出处:http://blog.csdn.net/sunnypotter/article/details/18948053

<think>嗯,用户之前问过为什么新生成的id_rsa.pub文件是空的,现在又遇到了执行ssh -T git@github.com时出现“Permission denied (publickey)”的问题。这两个问题都是关于SSH密钥的,所以用户可能是在配置GitHubSSH连接时遇到了问题。 首先,用户可能按照之前的建议重新生成了密钥,但可能没有正确添加公钥到GitHub账户,或者SSH代理没有运行。也可能是密钥的权限设置不正确,导致SSH无法读取私钥。 接下来,需要分析可能的错误原因。常见的问题包括:公钥未添加到GitHub、私钥未加载到ssh-agent、SSH配置文件指向错误的密钥、或者文件权限问题。还可能用户在使用非默认密钥名称后没有正确指定,导致GitHub无法识别。 然后,要分步骤给出解决方法。首先检查公钥是否添加到GitHub账户,这可以通过用户登录GitHub,在设置中查看SSH密钥。然后确认私钥是否加载到ssh-agent,使用ssh-add -l查看,如果没有就启动代理并添加。接着检查文件权限,确保.ssh目录是700,私钥是600。如果用户使用了自定义密钥名称,需要创建或修改~/.ssh/config文件指定对应的私钥路径。最后,测试连接时使用-vvv参数来获取详细的调试信息,帮助定位问题。 此外,用户可能忽略了生成密钥时输入的密码,或者密钥生成过程中出现了问题,比如中断导致密钥不完整。需要确保密钥生成完整,并且公钥正确复制到GitHub,没有多余的空格或换行符。 最后,提醒用户如果所有步骤都正确,但问题仍然存在,可能需要进一步检查网络环境或GitHub的状态页面,排除其他可能性。整个思考过程需要逻辑清晰,覆盖所有常见原因,并给出明确的解决步骤,帮助用户逐步排查问题。</think>当你执行 `ssh -T git@github.com` 时收到 `Permission denied (publickey)` 错误,说明 GitHub 无法验证你的 SSH 密钥。以下是可能的原因和解决方法: --- ### **1. 公钥未添加到 GitHub** - **原因**:本地生成的 SSH 公钥(`id_rsa.pub`)未添加到 GitHub 账户。 - **解决方法**: 1. **复制公钥内容**: ```bash cat ~/.ssh/id_rsa.pub ``` 输出内容应类似: `ssh-rsa AAAAB3NzaC1yc2E...(长字符串)... user@host` 复制全部内容(包括开头的 `ssh-rsa` 和结尾的邮箱/用户名)。 2. **添加到 GitHub**: - 登录 GitHub → 点击右上角头像 → **Settings** → **SSH and GPG keys** → **New SSH key**。 - 输入标题(如 `My PC`),粘贴公钥内容到 `Key` 字段 → 点击 **Add SSH key**。 --- ### **2. SSH 私钥未加载到 `ssh-agent`** - **原因**:如果私钥有密码保护,且未通过 `ssh-agent` 管理,SSH 可能无法自动使用密钥。 - **解决方法**: 1. **启动 `ssh-agent`**: ```bash eval "$(ssh-agent -s)" # 输出应类似 "Agent pid 12345" ``` 2. **添加私钥到代理**: ```bash ssh-add ~/.ssh/id_rsa # 如果有自定义密钥名称,替换为实际路径 ``` 输入私钥密码(如果生成时设置了密码)。 --- ### **3. 文件权限问题** SSH 严格要求密钥文件的权限: - 私钥(如 `id_rsa`)权限需为 `600`(仅用户可读写)。 - `.ssh` 目录权限需为 `700`。 **修复权限**: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa # 替换为你的私钥文件名 ``` --- ### **4. 使用了非默认密钥名称** - **原因**:如果你生成密钥时指定了自定义名称(如 `my_key`),SSH 默认不会自动使用它。 - **解决方法**: 1. **通过 `-i` 指定私钥路径**: ```bash ssh -T -i ~/.ssh/my_key git@github.com ``` 2. **或配置 SSH 自动识别密钥**: 在 `~/.ssh/config` 中添加以下内容(没有则新建): ```config Host github.com HostName github.com User git IdentityFile ~/.ssh/my_key # 替换为你的私钥路径 IdentitiesOnly yes ``` 之后直接执行: ```bash ssh -T git@github.com ``` --- ### **5. 公钥复制不完整** - **原因**:公钥内容可能被截断、包含换行符或空格。 - **解决方法**: 重新复制公钥内容(确保完全复制 `ssh-rsa` 开头到邮箱/用户名结尾的全部内容),并在 GitHub 中重新添加。 --- ### **6. 测试连接并查看详细日志** 使用 `-v`(verbose)参数查看详细错误信息: ```bash ssh -T -v git@github.com # 更详细输出(调试用) ssh -T -vvv git@github.com ``` - **观察关键日志**: - 是否尝试加载正确的私钥(如 `Offering public key: ~/.ssh/id_rsa`)。 - 是否与 GitHub 完成密钥协商(如 `Authentication succeeded`)。 --- ### **其他可能** - **防火墙/网络限制**:某些网络可能阻止 SSH 端口(22)。尝试切换网络或使用 HTTPS 替代 SSH- **GitHub 服务状态**:访问 [GitHub Status](https://www.githubstatus.com/) 检查是否有服务故障。 --- ### **验证成功后的输出** 如果配置正确,执行 `ssh -T git@github.com` 会显示: ``` Hi <你的GitHub用户名>! You've successfully authenticated, but GitHub does not provide shell access. ``` 如果仍有问题,请提供执行 `ssh -T -vvv git@github.com` 的日志片段,以便进一步定位原因。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值