git远程仓库配置SSH连接

1,064 阅读4分钟

HTTPS和SSH访问的优缺点

Git远程仓库可以通过 HTTPS 和 SSH 进行访问。下面是它们之间的不同和优缺点:

HTTPS 连接:

优点:

  • 通常易于设置和使用,因为无需设置 SSH 密钥和配置文件。
  • 可以从任何网络连接中访问,无需配置防火墙或路由器端口。
  • 可以轻松地从浏览器中访问和克隆 Git 仓库,无需使用 Git 命令行工具。

缺点:

  • 每次与 Git 仓库通信时都需要输入用户名和密码,除非您将密码存储在本地。
  • 每个 Git 操作都需要与远程服务器通信,这可能会导致速度较慢的情况。

SSH 连接:

优点:

  • 可以使用 SSH 密钥进行身份验证,无需每次输入密码。
  • SSH 连接通常比 HTTPS 连接更快,因为不需要每次与服务器通信。
  • 可以使用 SSH 配置文件自定义连接参数,如别名、端口和身份验证方法等。

缺点:

  • 配置可能需要一些时间和技术知识,因为需要生成和添加 SSH 密钥,并在 SSH 配置文件中设置连接参数。
  • 您可能需要配置防火墙和路由器以允许 SSH 连接。
  • 您需要在每个计算机上设置和使用 SSH 密钥,这可能会增加一些复杂性。

综上所述,选择使用 HTTPS 还是 SSH 连接取决于您的需求和偏好。如果您需要简单和易于设置的连接,并且速度不是关键问题,那么 HTTPS 连接是不错的选择。如果您需要更快的速度、更高的安全性和更灵活的连接配置,那么 SSH 连接则是更好的选择。

生成SSH秘钥

生成 RSA 密钥对

ssh-keygen -t rsa

gitlab 中添加SSH秘钥

id_rsa.pub 文件中的内容复制到输入框中,点击添加秘钥

image.png

配置SSH config

SSH 配置文件 ~/.ssh/config 是 SSH 客户端的配置文件,用于指定 SSH 连接的选项和参数。下面是 ~/.ssh/config 配置文件的详细解释:

  1. Host:指定远程主机的别名,用于简化 SSH 连接的命令。可以使用通配符 * 来匹配多个主机。

    Copy code
    Host example.com
    Host *.example.com
    
  2. HostName:指定远程主机的 IP 地址或域名。

    Copy code
    HostName 192.168.0.1
    HostName example.com
    
  3. User:指定 SSH 连接的用户名。

    sqlCopy code
    User root
    
  4. Port:指定 SSH 连接的端口号。

    Copy code
    Port 22
    
  5. IdentityFile:指定用于 SSH 连接的密钥文件。

    javascriptCopy code
    IdentityFile ~/.ssh/id_rsa
    
  6. Compression:启用或禁用 SSH 数据传输压缩。

    bashCopy code
    Compression yes
    
  7. ForwardAgent:启用或禁用 SSH Agent 转发。

    bashCopy code
    ForwardAgent yes
    
  8. StrictHostKeyChecking:指定 SSH 连接是否检查远程主机的主机密钥。

    bashCopy code
    StrictHostKeyChecking yes
    
  9. LogLevel:指定 SSH 日志的详细程度。

    Copy code
    LogLevel VERBOSE
    
  10. ServerAliveIntervalServerAliveCountMax:指定 SSH 连接保持活动的时间和重试次数。

    Copy code
    ServerAliveInterval 60
    ServerAliveCountMax 3
    

以上是 ~/.ssh/config 配置文件的一些常用选项和参数。根据需要,您可以添加或修改其他选项和参数以满足您的需求。

我们配置gitlab连接配置

Host gitlab.com
  HostName gitlab.comgit 
  PreferredAuthentications publickey
  User git
  IdentityFile ~/.ssh/id_rsa

更换https连接为ssh连接

在已存在的项目中更换连接方式

git remote set-url origin git@gitlab.com:xx

我们运行一下git pull测试连接是否正常。发现报错

image.png

这个错误是由于您首次连接远程主机时,SSH 客户端无法验证主机身份,导致出现此错误。为了解决此问题,您需要确认远程主机身份,然后将其添加到本地 SSH 信任列表中。

首先,您需要确认远程主机的身份。在出现上述错误提示时,SSH 客户端会显示远程主机的公钥指纹。您可以通过其他渠道(例如远程主机管理员)获取预期的公钥指纹,并验证它是否与 SSH 客户端显示的指纹匹配。

一旦您确认了远程主机的身份,您可以将其添加到本地 SSH 信任列表中。您可以通过在终端中输入以下命令来实现:

ssh-keyscan gitlab.com >> ~/.ssh/known_hosts

上述命令会将远程主机的公钥添加到 ~/.ssh/known_hosts 文件中。在下一次连接到远程主机时,SSH 客户端会自动验证主机身份并继续连接。

如果仍然无法连接到远程主机,请确保您具有正确的访问权限,并且远程 Git 存储库确实存在。

总结

以上就git配置ssh连接的全部过程了。