Git SSH公钥权限拒绝及主机解析失败问题求助
Git SSH操作故障排查与解决
问题现象
- 执行Git克隆命令时出现公钥权限拒绝错误:
$ git clone ssh://git@stash.gto.intranet.com:7999/~shashank.khanduja@test.com/hello-java.git Cloning into 'hello-java'... git@stash.gto.intranet.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
- 测试SSH连接时因命令格式错误,导致主机名解析失败:
ssh -T git@stash.gto.intranet.com:7999 ssh: Could not resolve hostname stash.gto.intranet.com:7999: Name or service not known
已尝试删除.ssh文件夹并重新生成密钥,问题仍未解决。
解决步骤
1. 修正SSH测试命令格式
SSH命令中端口号不能直接跟在主机名后用冒号拼接,需用-p参数指定端口,正确测试命令为:
ssh -T -p 7999 git@stash.gto.intranet.com
先执行此命令确认基础SSH连接是否正常。
2. 验证SSH密钥配置
- 修复密钥文件权限:
.ssh文件夹权限必须为700,私钥文件(如id_rsa)权限为600,公钥文件(如id_rsa.pub)可设为644,执行以下命令修正:chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub - 确认公钥已添加至Stash账号:登录Stash平台,进入个人设置→SSH密钥,检查是否存在当前生成的公钥内容(可通过
cat ~/.ssh/id_rsa.pub查看公钥)。 - 加载密钥至SSH代理:执行
ssh-add ~/.ssh/id_rsa,若提示代理未启动,先启动代理再加载:eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa
3. 检查Git远程URL合法性
针对已克隆的仓库,执行以下命令检查远程URL格式是否正确:
git remote -v
确保URL为ssh://git@stash.gto.intranet.com:7999/xxx/xxx.git格式,无拼写错误或多余符号。
4. 排查网络与DNS问题
- 测试主机解析:执行
ping stash.gto.intranet.com,若解析失败,可手动修改hosts文件添加映射(Windows路径:C:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts),添加内容:<服务器实际IP> stash.gto.intranet.com - 测试端口连通性:执行
telnet stash.gto.intranet.com 7999或nc -zv stash.gto.intranet.com 7999,确认7999端口未被防火墙或内网策略拦截。
内容的提问来源于stack exchange,提问作者sHaShAnk K
相关产品推荐
相关产品推荐

