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 文件中的内容复制到输入框中,点击添加秘钥
配置SSH config
SSH 配置文件 ~/.ssh/config 是 SSH 客户端的配置文件,用于指定 SSH 连接的选项和参数。下面是 ~/.ssh/config 配置文件的详细解释:
-
Host:指定远程主机的别名,用于简化 SSH 连接的命令。可以使用通配符 * 来匹配多个主机。Copy code Host example.com Host *.example.com -
HostName:指定远程主机的 IP 地址或域名。Copy code HostName 192.168.0.1 HostName example.com -
User:指定 SSH 连接的用户名。sqlCopy code User root -
Port:指定 SSH 连接的端口号。Copy code Port 22 -
IdentityFile:指定用于 SSH 连接的密钥文件。javascriptCopy code IdentityFile ~/.ssh/id_rsa -
Compression:启用或禁用 SSH 数据传输压缩。bashCopy code Compression yes -
ForwardAgent:启用或禁用 SSH Agent 转发。bashCopy code ForwardAgent yes -
StrictHostKeyChecking:指定 SSH 连接是否检查远程主机的主机密钥。bashCopy code StrictHostKeyChecking yes -
LogLevel:指定 SSH 日志的详细程度。Copy code LogLevel VERBOSE -
ServerAliveInterval和ServerAliveCountMax:指定 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测试连接是否正常。发现报错
这个错误是由于您首次连接远程主机时,SSH 客户端无法验证主机身份,导致出现此错误。为了解决此问题,您需要确认远程主机身份,然后将其添加到本地 SSH 信任列表中。
首先,您需要确认远程主机的身份。在出现上述错误提示时,SSH 客户端会显示远程主机的公钥指纹。您可以通过其他渠道(例如远程主机管理员)获取预期的公钥指纹,并验证它是否与 SSH 客户端显示的指纹匹配。
一旦您确认了远程主机的身份,您可以将其添加到本地 SSH 信任列表中。您可以通过在终端中输入以下命令来实现:
ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
上述命令会将远程主机的公钥添加到 ~/.ssh/known_hosts 文件中。在下一次连接到远程主机时,SSH 客户端会自动验证主机身份并继续连接。
如果仍然无法连接到远程主机,请确保您具有正确的访问权限,并且远程 Git 存储库确实存在。
总结
以上就git配置ssh连接的全部过程了。