使用 SSH | Github添加添加 SSH 公钥 | SSH优势

149 阅读5分钟

使用 SSH

使用 SSH(Secure Shell)协议进行 Git 操作需要完成以下步骤:

  1. 检查是否已经有 SSH 密钥:

    首先,检查你的系统上是否已经存在 SSH 密钥。你可以使用以下命令检查:

     ls -al ~/.ssh
    

    如果你已经有 id_rsaid_rsa.pub 文件,说明你已经有了 SSH 密钥。

  2. 生成新的 SSH 密钥(如果没有的话):

    如果你在上一步检查时发现没有 SSH 密钥,你需要生成一个。运行以下命令:

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

    在这个命令中,将 "your_email@example.com" 替换为你的邮箱地址。一路回车即可使用默认设置生成 SSH 密钥。

    这将在 ~/.ssh 目录下生成 id_rsaid_rsa.pub 文件,分别是私钥和公钥。

  3. 添加 SSH 密钥到 SSH 代理(可选):

    如果你使用 SSH 代理,可以将生成的密钥添加到代理中,以避免在每次连接时输入密码。运行以下命令:

     ssh-add ~/.ssh/id_rsa
    
  4. 将公钥添加到远程仓库:

    将你的 SSH 公钥(通常是 ~/.ssh/id_rsa.pub 文件的内容)添加到你使用的 Git 托管服务(如 GitHub、GitLab、Bitbucket)的设置中。

    在 GitHub 上,你可以将公钥添加到 SSH and GPG keys 页面。

    在 GitLab 上,你可以添加到 SSH Keys 页面。

    在 Bitbucket 上,你可以添加到 SSH keys 页面。

  5. 测试 SSH 连接:

    你可以使用以下命令测试 SSH 连接是否成功:

     ssh -T git@github.com
    

    如果一切设置正确,你会收到一条成功的消息。

  6. 修改本地 Git 仓库的远程 URL:

    最后,修改你本地 Git 仓库的远程 URL,将原先使用 HTTPS 的 URL 替换为 SSH 格式的 URL。运行以下命令:

     git remote set-url origin git@github.com:username/repository.git
    

    usernamerepository 替换为你的 GitHub 用户名和仓库名。

现在,你的本地 Git 仓库就配置为使用 SSH 协议进行远程操作了。在使用 SSH 时,你不再需要输入用户名和密码,而是通过密钥对进行身份验证。

成功push:

image.png

添加 SSH 公钥

将 SSH 公钥添加到远程仓库需要在远程仓库托管服务的网站上完成。以下是在一些常见的托管服务(GitHub、GitLab、Bitbucket)上添加 SSH 公钥的步骤:

1. GitHub 上添加 SSH 公钥:

  1. 登录到你的 GitHub 帐户。

  2. 点击右上角的用户头像,选择 "Settings"。

  3. 在左侧导航栏中选择 "SSH and GPG keys"。

  4. 点击 "New SSH key"。

  5. 在 "Title" 字段中,为你的密钥命名,然后将你的 SSH 公钥粘贴到 "Key" 字段中。

  6. 点击 "Add SSH key"。

2. GitLab 上添加 SSH 公钥:

  1. 登录到你的 GitLab 帐户。

  2. 点击右上角的用户头像,选择 "Settings".

  3. 在左侧导航栏中选择 "SSH Keys"。

  4. 在 "Key" 字段中,将你的 SSH 公钥粘贴进去,然后给它一个可识别的标题。

  5. 点击 "Add key"。

3. Bitbucket 上添加 SSH 公钥:

  1. 登录到你的 Bitbucket 帐户。

  2. 点击右上角的用户头像,选择 "Bitbucket settings"。

  3. 在左侧导航栏中选择 "SSH keys"。

  4. 点击 "Add key"。

  5. 在 "Label" 字段中,为你的密钥命名,然后将你的 SSH 公钥粘贴到 "Key" 字段中。

  6. 点击 "Add key"。

一旦你在远程仓库上添加了 SSH 公钥,你就可以使用 SSH 协议进行 Git 操作,而无需每次都输入用户名和密码。确保你的本地 Git 仓库已经配置为使用 SSH 远程 URL(通过 git remote set-url 命令),这样你就可以顺利地进行 SSH 连接了。

SSH优势

切换从 HTTPS 到 SSH 协议在 Git 中有一些优势,具体原因包括:

  1. 身份验证方式:

    • HTTPS: 使用 HTTPS 协议时,通常需要在每次与远程仓库交互时输入用户名和密码,或者使用个人访问令牌(Personal Access Token)进行身份验证。
    • SSH: 使用 SSH 协议时,你可以通过配置 SSH 密钥,实现无需每次输入用户名和密码的身份验证。这使得操作更加方便,尤其在频繁的 Git 操作中。
  2. 安全性:

    • HTTPS: HTTPS 协议在通信中使用了用户名和密码或者个人访问令牌,这可能被视为相对安全。然而,在某些情况下,特别是在公共网络上,有可能被拦截或窃听。
    • SSH: SSH 协议使用了公钥加密,提供了更高的安全性。通信过程中不会在每次传输时发送密码,而是通过密钥对进行加密和解密。
  3. 权限管理:

    • HTTPS: HTTPS 通常需要使用用户名和密码,或者个人访问令牌,这是基于用户级别的权限管理。
    • SSH: SSH 使用密钥对进行身份验证,密钥是与特定设备或用户关联的。这使得更容易实现基于密钥的权限管理,你可以将公钥添加到远程仓库,而无需每次都输入密码。

总体而言,选择 HTTPS 还是 SSH 取决于个人偏好、安全性需求以及方便性。许多开发者倾向于使用 SSH,因为它提供了更好的安全性和更便捷的身份验证方式,特别是在需要频繁与远程仓库进行交互的情况下。