Git使用SSH安全访问远程仓库
1、Git远程仓库访问方式
Git是一个分布式版本控制系统,它可以通过远程连接来实现代码的管理和共享。在Git中,可以使用以下两种方式进行远程连接:
1.1、使用HTTPS协议
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种基于TCP/IP的应用层传输协议,它定义了客户端与服务器之间请求和响应的格式
HTTP本身不安全,因为传输的数据未经加密,可能会被窃听或篡改,为了解决这个问题,引入了HTTPS,即在HTTP上增加了SSL/TLS协议,为数据传输提供了加密、完整性校验和身份验证
可以通过HTTPS协议将本地Git仓库与远程仓库进行连接。远程仓库的HTTPS URL形式如下:
https://github.com/username/repository.git
1.2、使用SSH协议
SSH(Secure Shell,安全外壳协议)是一种用于安全远程访问和其他安全网络服务的协议,它提供了加密通信和身份验证机制
相比于HTTPS,SSH协议更加安全,可以使用密钥对进行身份验证。使用时首先需要在远程仓库服务中添加SSH公钥。远程仓库的SSH URL形式如下:
git@github.com:username/repository.git
在使用SSH连接远程Git存储库时,我们可以使用SSH密钥对来确保安全性。以下是关于如何生成和使用SSH密钥对的详细步骤:
2、使用SSH访问远程仓库
2.1、生成SSH密钥对
-
打开Git终端或命令行工具
-
在命令行中执行以下命令来生成SSH密钥对:
ssh-keygen -t rsa -b 4096 -C “email@example.com”
这将创建一个RSA密钥对,其中
- -t:用于指定密钥类型(RSA为非对称加密算法)
- -b:用于指定密钥位数(通常为4096位,更安全)
- -C:用于添加注释,通常是电子邮件地址
-
选择密钥对的保存位置,按Enter键使用默认位置(
~/.ssh/id_rsa
)还可以选择为SSH密钥对设置密码,提高安全性。这意味着在每次使用密钥对时,都需要输入密码。如果选择设置密码,系统将要求输入密码并进行确认
-
生成SSH密钥对,公钥保存在
~/.ssh/id_rsa.pub
中,私钥保存在~/.ssh/id_rsa
中
2.2、添加SSH密钥到SSH-Agent
SSH-Agent是一个密钥管理工具,用于管理SSH密钥并在需要时提供它们
-
在命令行中执行以下命令将SSH密钥添加到SSH-Agent:
ssh-add ~/.ssh/id_rsa
如果自定义了保存位置,请将
~/.ssh/id_rsa
替换为生成密钥时选择的路径 -
如果设置了密码,系统将提示输入密码以解锁密钥。一旦完成,密钥将添加到SSH-Agent中
2.3、将公钥添加到Git远程仓库
- 打开
~/.ssh/id_rsa.pub
文件,查看并复制公钥内容 - 登录到远程Git存储库托管服务(例如GitHub、GitLab等)
- 在托管服务中找到账户设置或配置文件设置,找到SSH密钥部分
- 添加公钥,这里通常是将公钥粘贴到提供的字段中并保存
2.4、使用SSH连接远程仓库
现在,我们可以通过SSH连接到远程Git存储库。当克隆或配置远程存储库时,确保使用SSH URL,而不是HTTPS URL
例如,要克隆一个远程存储库Repository,可以使用如下命令:
git clone git@github.com:username/repository.git
这将使用SSH协议连接到远程Git存储库Repository
通过使用SSH密钥对,可以确保数据在传输时受到加密保护,并提供了更高的安全性:SSH密钥对为所有Git操作提供了更安全的身份验证