使用ssh连接到github

  1. 生成 SSH 密钥:首先,你需要在本地机器上生成一个 SSH 密钥对。你可以在终端中使用 ssh-keygen 命令来生成密钥对 ⁵。例如,你可以使用以下命令来生成一个新的 ed25519 密钥对:

    1
    ssh-keygen -t ed25519 -C "<label>"

    其中,<label> 是一个可选的标签,用于帮助你识别这个密钥 ⁵。

输入密码时,密码不会被显示出来,但仍然可以正常输入

  1. 添加密钥到 SSH-agent:生成密钥对后,你可以将其添加到 ssh-agent 中。ssh-agent 是 SSH 的一个关键管理器。将密钥添加到 ssh-agent 可以避免你反复输入密码 ⁵。

  2. 将公钥添加到 GitHub 账户:然后,你需要将你的 SSH 公钥添加到 GitHub 账户中 ⁵。首先,复制你的 SSH 公钥。然后,在 GitHub 中打开设置页面,点击 “SSH and GPG keys”,然后点击 “New SSH key” 或 “Add SSH key”。在 “Key” 字段中粘贴你的公钥,然后点击 “Add SSH key”⁷。

  3. 更改仓库 URL:最后,你需要将你的仓库 URL 更改为 SSH URL⁷。你可以使用以下命令来更改仓库 URL:

    1
    git remote set-url origin <ssh url>

    其中,<ssh url> 是你的仓库的 SSH URL⁷。

你可以使用 git remote -v 命令来查看你的仓库的远程 URL¹。这个命令会显示你的远程仓库的 fetch 和 push URL¹。如果这些 URL 是 SSH URL,那么你就已经成功地将你的连接方式切换到了 SSH¹。

你也可以尝试使用 SSH 连接到 GitHub,然后查看是否能成功连接 ²。你可以使用以下命令来测试你的 SSH 连接:

1
ssh -T git@github.com

当你第一次尝试通过 SSH 连接到 GitHub 时,你的计算机会询问你是否信任 GitHub 的服务器。这是一个常见的安全措施,用于防止中间人攻击。在这种情况下,你应该输入 “yes”,然后按回车键。这将把 GitHub 的服务器添加到你的计算机的已知主机列表中,以后你再连接到 GitHub 时就不会再看到这个提示了。

如果你看到类似于 “Hi ! You’ve successfully authenticated, but GitHub does not provide shell access.” 的消息,那么你就已经成功地通过 SSH 连接到了 GitHub²。

  1. 启动 ssh-agent:
    这个错误可能是因为 ssh-agent 服务没有启动 ¹。你可以尝试以管理员权限运行 PowerShell,然后手动启动服务 ¹。你可以通过以下命令来检查 ssh-agent 服务的状态 ¹:
1
Get-Service ssh-agent

如果服务的状态显示为 “Stopped”,那么你需要将其启动类型设置为 “Manual” 或 “Automatic”,然后再次尝试启动服务 ¹。你可以使用以下命令来设置启动类型 ¹:

1
Set-Service -Name ssh-agent -StartupType Manual

或者

1
Set-Service -Name ssh-agent -StartupType Automatic

然后,你可以再次尝试启动服务 ¹:

1
Start-Service ssh-agent

在 Windows 服务中,”Manual” 和 “Automatic” 是服务的两种启动类型 ¹²³:

  • Automatic:这意味着服务会在计算机启动时自动启动 ¹²。这是因为有些服务是系统运行所必需的,或者它们需要在系统启动时就开始运行 ²。

  • Manual:这意味着服务不会在计算机启动时自动启动 ¹²。相反,它们只有在被其他服务或程序调用时才会启动 ¹²。这种类型的服务通常是那些不常用,或者只在特定条件下才需要的服务 ²。

总的来说,”Automatic” 和 “Manual” 的主要区别在于服务是否会在计算机启动时自动启动 ¹²

  1. 关闭 ssh-agent:
    在你完成 SSH 操作后,你可以选择是否关闭 ssh-agent³⁴。如果你不再需要 SSH 连接,那么关闭 ssh-agent 是一个好主意,因为这样可以避免留下活动的密钥 ³。然而,如果你仍然需要 SSH 连接,那么你可能希望保持 ssh-agent 处于运行状态 ⁴。

如果你决定关闭 ssh-agent,你可以使用以下命令来停止它 ²:

1
Stop-Service ssh-agent

个人用户还是建议设置为自动

参考:

  1. https://www.linuxfordevices.com/tutorials/linux/connect-to-github-with-ssh