解决使用ssh连接github过程中Permission denied (publickey).问题

本文分享了在同一台主机上同时使用GitHub和GitLab时遇到的权限拒绝错误及解决办法,通过添加公钥、使用ssh-agent和ssh-add命令成功实现两者共存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人在同一台主机同时使用github和gitlab遇到一些问题,各方百度才

找到解决方法。特此记录一下。

按照网上的很多方法在同时使用github和gitlab时可以参照此博客:点击打开链接

我也是按照博客里的方法进行配置,但连接的时候出现如下问题:

Permission denied (publickey).

本人提供几种解决方法:


 

  1. 首先确认你gitlab和github上添加了生成的公钥上去:

  2. 如果已经添加,使用命令:ssh -T -v git@github.com 。可以看到连接的具体信息。

  3. ssh-agent bash 

  4. ssh-add /c/Users/80002600/.ssh/id_rsa_github 添加生成的github的私钥文件地址


    最后,应该可以正常连接gitlab和github。

### SSH 连接 GitHub 出现 `Permission denied (publickey)` 的解决方案 当在 CentOS 上尝试通过 SSH 访问 GitHub 并收到 `Permission denied (publickey)` 错误时,这通常是由于本地未正确配置 SSH 密钥或 GitHub 未识别该密钥所致。以下是详细的分析和解决办法: #### 配置 SSH 秘钥 1. **进入 SSH 配置目录** 切换到 `.ssh` 目录并确认是否存在现有的 SSH 密钥文件: ```bash cd ~/.ssh/ ls ``` 如果不存在任何密钥文件,则需要重新生成。 2. **生成新的 SSH 密钥** 使用以下命令生成一个新的 RSA 类型的 SSH 密钥,并将其与指定的电子邮件关联: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 此处需替换为实际使用的邮箱地址[^5]。执行过程中会提示设置密码(可选),按 Enter 跳过即可完成默认路径下的密钥生成。 3. **复制公钥至剪贴板** 将新生成的公钥内容读取出来准备上传给 GitHub: ```bash cat ~/.ssh/id_rsa.pub ``` 4. **添加公钥到 GitHub** 登录 GitHub 帐户后转至账户设置中的 “SSH and GPG keys”,点击“New SSH key”按钮粘贴上述获取的内容提交保存[^2]。 #### 修改 SSH Config 文件 为了区分多个远程主机的身份验证需求,可以自定义配置特定于 GitHub连接参数。编辑或者新建一个名为 `~/.ssh/config` 的文件加入如下条目: ```plaintext Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa ``` 这里假设刚才创建的是标准名称 `id_rsa`;如果有其他命名比如例子提到过的 `id_custome_name` ,则相应调整路径指向正确的私钥位置[^3]。 #### 测试连接有效性 最后一步测试是否成功建立无密码认证通道向目标服务器发起握手请求: ```bash ssh -T git@github.com ``` 如果一切正常应该返回欢迎消息类似于:“Hi username! You've successfully authenticated...”。否则再次核查每环节设定直至排除所有潜在障碍为止[^4]。 ```python import os def check_ssh_key(): home_dir = os.path.expanduser("~") ssh_path = f"{home_dir}/.ssh/" if not os.path.exists(ssh_path): print(f"No .ssh directory found at {ssh_path}. Creating one...") os.makedirs(ssh_path) private_key_file = f"{ssh_path}id_rsa" public_key_file = f"{private_key_file}.pub" if not os.path.isfile(private_key_file) or not os.path.isfile(public_key_file): email = input("Enter your email address to generate a new SSH key: ") os.system(f'ssh-keygen -t rsa -b 4096 -C "{email}"') check_ssh_key() print("Please add the content of ~/.ssh/id_rsa.pub into your GitHub account settings under 'SSH Keys'. Afterward, test with:") print("`ssh -T git@github.com`") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值