github-ssh相关

136 阅读4分钟

出现 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
  1. 登录到 GitHub。
  2. 进入你的账户设置:点击右上角的头像,然后选择 "Settings"。
  3. 在左侧菜单中选择 "SSH and GPG keys"。
  4. 点击 "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 文件。具体步骤如下:

  1. 编辑 known_hosts 文件: 找到并删除与 GitHub 相关的那一行。你可以使用文本编辑器手动完成,也可以使用 ssh-keygen 命令来删除特定的行。

  2. 使用 ssh-keygen 删除特定行: 根据你的错误信息,问题出在 ~/.ssh/known_hosts 文件的第 10 行。

    ssh-keygen -R github.com
    
  3. 验证删除: 确保 GitHub 的主机密钥已经从 ~/.ssh/known_hosts 中删除。

  4. 重新添加 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 仓库地址:

  1. 查看当前远程仓库地址: 首先,查看当前配置的远程仓库地址。

    git remote -v
    
  2. 解除远程仓库地址: 你可以使用以下命令删除当前的远程仓库地址。

    git remote remove origin
    
  3. 验证移除: 运行 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 仓库的远程地址:

查看当前远程地址

  1. 打开终端。

  2. 进入你的 Git 仓库目录。

  3. 使用以下命令查看当前远程地址:

    git remote -v
    

    这将显示类似以下的输出:

    origin  https://github.com/yourusername/your-repo.git (fetch)
    origin  https://github.com/yourusername/your-repo.git (push)
    

更换远程地址

  1. 使用以下命令更换远程地址:

    git remote set-url origin https://newurl.com/your-repo.git
    
  2. 再次使用 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,你可以这样操作:

  1. 查看当前远程地址:

    git remote -v
    

    输出可能是:

    origin  https://github.com/olduser/oldrepo.git (fetch)
    origin  https://github.com/olduser/oldrepo.git (push)
    
  2. 更换远程地址:

    git remote set-url origin https://github.com/newuser/newrepo.git
    
  3. 确认更换成功:

    git remote -v
    

    输出应该是:

    origin  https://github.com/newuser/newrepo.git (fetch)
    origin  https://github.com/newuser/newrepo.git (push)