跳到主要内容

将Linux上的git和Github关联

以下是配置 Git 和关联 GitHub 账户的步骤:

  1. 安装 Git(如果尚未安装):在 Ubuntu 终端中,运行以下命令来安装 Git:

    sudo apt-get update
    sudo apt-get install git
  2. 配置 Git 用户名和电子邮件:运行以下命令,将 <your_name> 替换为你的用户名,将 <your_email> 替换为你的电子邮件地址:

    git config --global user.name "<your_name>"
    git config --global user.email "<your_email>"
  3. 生成 SSH 密钥:在终端中运行以下命令,将 <your_email> 替换为你的电子邮件地址:

    ssh-keygen -t ed25519 -C "<your_email>"

    按 Enter 接受默认文件位置,然后输入一个密码(可选)并再次输入以确认。

  4. 添加 SSH 密钥到 ssh-agent

    首先,确保 ssh-agent 在后台运行:

    eval "$(ssh-agent -s)"

    然后,将 SSH 私钥添加到 ssh-agent:

    ssh-add ~/.ssh/id_ed25519
  5. 将 SSH 密钥添加到 GitHub 账户

    a. 复制 SSH 公钥内容:

    cat ~/.ssh/id_ed25519.pub

    b. 登录到你的 GitHub 账户,然后点击右上角的用户头像,选择 "Settings"。

    c. 在左侧菜单中,点击 "SSH and GPG keys",然后点击 "New SSH key"。

    d. 为密钥输入一个标题(例如 "My Ubuntu SSH Key"),然后将复制的 SSH 公钥粘贴到 "Key" 区域。点击 "Add SSH Key" 以保存。

现在,你已经在 Ubuntu 上配置了 Git,并将其与你的 GitHub 账户关联。你可以开始克隆、推送和拉取你的仓库。

另一种方法

要在 Ubuntu 上通过 SSH key 访问 GitHub,你需要按照以下步骤操作:

  1. 检查本地 SSH 密钥:首先,检查是否已经有一个 SSH 密钥。打开终端,输入以下命令:

    ls -al ~/.ssh

    如果看到 id_rsaid_rsa.pub 两个文件,说明你已经有一个 SSH 密钥。如果没有,继续执行下一步。

  2. 生成新的 SSH 密钥:在终端中输入以下命令,替换为你的 GitHub 注册邮箱:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    按回车键接受默认文件路径,之后会提示你设置一个密码。输入一个安全的密码并再次输入以确认。

  3. 启动 SSH 代理:在后台执行以下命令以启动 SSH 代理:

    eval "$(ssh-agent -s)"

    如果你收到了 "Agent pid 12345" 之类的响应,说明 SSH 代理已成功启动。

  4. 将 SSH 密钥添加到 SSH 代理:使用以下命令将 SSH 密钥添加到代理:

    ssh-add ~/.ssh/id_rsa

    如果成功,你会收到 "Identity added" 的响应。

  5. 将 SSH 密钥添加到 GitHub 账户:首先,使用以下命令复制 SSH 密钥到剪贴板:

    xclip -sel clip < ~/.ssh/id_rsa.pub

    接下来,登录你的 GitHub 账户,然后依次点击右上角头像 > Settings > SSH and GPG keys > New SSH key。在 "Title" 栏中输入一个描述性标题,如 "Ubuntu SSH key",然后在 "Key" 栏中粘贴你的 SSH 密钥。点击 "Add SSH key" 保存。

  6. 测试 SSH 连接:在终端中输入以下命令,替换为你的 GitHub 用户名:

    ssh -T git@github.com

    如果看到 "Hi your_username! You've successfully authenticated, but GitHub does not provide shell access." 说明你已成功设置 SSH 连接。

现在你已经设置好了 SSH key,可以通过 SSH 访问 GitHub。接下来,你可以克隆、推送和拉取仓库等操作。在克隆仓库时,确保使用 SSH URL,例如:

git clone git@github.com:your_username/your_repository.git

连接Git报错

配置完成之后报这个错,如何解决? kex_exchange_identification: Connection closed by remote host Connection closed by 20.205.243.166 port 22 fatal: 无法读取远程仓库。

解决案:

kex_exchange_identification: Connection closed by remote host 是一个比较常见的错误,通常与以下问题有关:

  1. 服务器连接问题:可能是 GitHub 服务器暂时出现故障。稍等一段时间后再次尝试连接。

  2. 网络问题:检查你的网络连接,确保网络正常。有时,特定网络环境(如企业或学校网络)可能会阻止 SSH 连接。如果可能,请更换网络环境后重试。

  3. SSH 配置问题:检查 ~/.ssh/config 文件是否存在错误。如果没有此文件,可以跳过此步骤。如果存在,请确保配置正确。例如:

    Host github.com
    Hostname ssh.github.com
    Port 443
    User git
    IdentityFile ~/.ssh/id_rsa

    保存更改后,再次尝试连接。

  4. SSH 密钥问题:确保你的 SSH 密钥已添加到 GitHub 账户,并且已添加到 SSH 代理。请参阅之前的回答以了解如何添加 SSH 密钥。

  5. 防火墙问题:某些防火墙设置可能会阻止 SSH 连接。检查你的防火墙设置,确保允许 SSH 连接。

检查 ~/.ssh/config 文件是否存在错误

检查 ~/.ssh/config 文件是否存在错误的方法如下:

  1. 打开文件:首先,使用文本编辑器打开 ~/.ssh/config 文件。在终端中输入以下命令:

    nano ~/.ssh/config

    如果文件不存在,你会看到一个空白文件。如果你之前未进行过任何配置,可以不用创建此文件。

  2. 检查常见配置错误:检查文件内容,确保不存在以下错误:

    • 确保每个配置块以 Host 开头,并且缩进正确。例如:

      Host github.com
      Hostname ssh.github.com
      Port 443
      User git
      IdentityFile ~/.ssh/id_rsa
    • 检查 Host 部分是否正确。对于 GitHub,应为 github.com

    • 检查 Hostname 是否正确。对于 GitHub,可以使用 ssh.github.com,这将 SSH 连接路由至端口 443。

    • 检查 Port 是否设置为 443。这对于绕过某些网络限制非常有用。

    • 检查 User 是否设置为 git

    • 确保 IdentityFile 指向正确的私钥文件。通常是 ~/.ssh/id_rsa,但如果使用了其他名称或路径,请相应修改。

    • 确保不要使用多余的空格或制表符。

  3. 保存并退出:如果进行了更改,请保存文件并退出文本编辑器。在 nano 编辑器中,按 Ctrl + X,然后按 Y 以保存更改,最后按 Enter 退出。

在检查并修复 ~/.ssh/config 文件中的错误后,再次尝试 SSH 连接。

如果问题仍然存在,可以尝试调试连接,以获取有关错误的更多信息。在终端中输入以下命令:

ssh -vvv git@github.com

此命令将提供详细的调试信息,帮助你诊断连接问题。