出现 Permission denied (publickey) 错误表明你还没有正确配置 SSH 密钥用于 GitHub 的访问。以下是解决步骤:
1. 生成新的 SSH 密钥对(如果你还没有的话)
如果你还没有 SSH 密钥,可以使用以下命令生成一个新的:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示操作,使用默认路径(~/.ssh/id_rsa)并设置密码(可选)。
2. 添加 SSH 密钥到 ssh-agent
启动 ssh-agent 并添加你的 SSH 私钥:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
3. 将 SSH 公钥添加到 GitHub
找到你的公钥内容并复制:
cat ~/.ssh/id_rsa.pub
- 登录到 GitHub。
- 进入你的账户设置:点击右上角的头像,然后选择 "Settings"。
- 在左侧菜单中选择 "SSH and GPG keys"。
- 点击 "New SSH key",然后将你的公钥内容粘贴进去并保存。
4. 测试连接
测试是否能成功连接到 GitHub:
ssh -T git@github.com
如果一切正常,你应该看到类似下面的信息:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
5. 再次尝试推送代码
最后,重新尝试推送代码到你的 GitHub 仓库:
git push -u origin master
这些步骤应该可以解决 Permission denied (publickey) 的问题并让你成功推送代码到 GitHub。
你可以单独删除 GitHub 的主机密钥,而不清除整个 ~/.ssh/known_hosts 文件。具体步骤如下:
-
编辑
known_hosts文件: 找到并删除与 GitHub 相关的那一行。你可以使用文本编辑器手动完成,也可以使用ssh-keygen命令来删除特定的行。 -
使用
ssh-keygen删除特定行: 根据你的错误信息,问题出在~/.ssh/known_hosts文件的第 10 行。ssh-keygen -R github.com -
验证删除: 确保 GitHub 的主机密钥已经从
~/.ssh/known_hosts中删除。 -
重新添加 GitHub 的主机密钥: 运行以下命令来自动添加新的主机密钥。
ssh -T git@github.com
具体步骤如下:
1. 编辑 known_hosts 文件
你可以使用任何文本编辑器打开 ~/.ssh/known_hosts 文件并手动删除第 10 行,或者直接使用以下命令删除:
2. 使用 ssh-keygen 删除特定行
ssh-keygen -R github.com
3. 验证删除
确保 GitHub 的主机密钥已被删除。你可以重新查看 ~/.ssh/known_hosts 文件:
cat ~/.ssh/known_hosts
4. 重新添加 GitHub 的主机密钥
ssh -T git@github.com
当你运行上述命令时,它会提示你接受新的主机密钥。接受后,你应该能够正常连接到 GitHub。
重新尝试 git push
最后,你可以再次尝试执行 git push 命令:
git push -u origin master
这样,你就不需要清除整个 ~/.ssh/known_hosts 文件,只需要针对 GitHub 的主机密钥进行处理。
你可以通过以下步骤解除远程 Git 仓库地址:
-
查看当前远程仓库地址: 首先,查看当前配置的远程仓库地址。
git remote -v -
解除远程仓库地址: 你可以使用以下命令删除当前的远程仓库地址。
git remote remove origin -
验证移除: 运行
git remote -v,确保远程仓库地址已经被移除。
具体步骤如下:
1. 查看当前远程仓库地址
git remote -v
输出可能会是这样的:
origin git@github.com:yourusername/your-repo.git (fetch)
origin git@github.com:yourusername/your-repo.git (push)
2. 解除远程仓库地址
git remote remove origin
3. 验证移除
再次运行 git remote -v,应该不会有任何输出,表示远程仓库地址已被移除。
完成上述步骤后,你可以重新添加新的远程仓库地址(如果需要):
git remote add origin https://github.com/yourusername/your-new-repo.git
如果有任何进一步的问题,请告诉我。
你可以使用以下步骤来查看和更改 Git 仓库的远程地址:
查看当前远程地址
-
打开终端。
-
进入你的 Git 仓库目录。
-
使用以下命令查看当前远程地址:
git remote -v这将显示类似以下的输出:
origin https://github.com/yourusername/your-repo.git (fetch) origin https://github.com/yourusername/your-repo.git (push)
更换远程地址
-
使用以下命令更换远程地址:
git remote set-url origin https://newurl.com/your-repo.git -
再次使用
git remote -v命令确认远程地址已更改:git remote -v你应该会看到新的远程地址:
origin https://newurl.com/your-repo.git (fetch) origin https://newurl.com/your-repo.git (push)
示例
假设你的旧远程地址是 https://github.com/olduser/oldrepo.git,新的远程地址是 https://github.com/newuser/newrepo.git,你可以这样操作:
-
查看当前远程地址:
git remote -v输出可能是:
origin https://github.com/olduser/oldrepo.git (fetch) origin https://github.com/olduser/oldrepo.git (push) -
更换远程地址:
git remote set-url origin https://github.com/newuser/newrepo.git -
确认更换成功:
git remote -v输出应该是:
origin https://github.com/newuser/newrepo.git (fetch) origin https://github.com/newuser/newrepo.git (push)