一、为什么使用SSH?
使用 Git 的 SSH(安全外壳协议)主要有以下几个原因:
1. 安全性:SSH 是一种加密的网络协议,用于在网络中安全地运行网络服务。使用 SSH,所有传输的数据都会被加密,这可以保护你的代码和敏感信息不被泄露。
2. 认证方式:SSH 提供了多种认证方式,其中最常用的是基于密钥的认证。这种方式比基于密码的认证更安全,因为密码不会在网络中传输,而且可以结合使用 SSH 密钥和密码,提供双重保护。
3. 便捷性:配置好 SSH 密钥后,你就可以在不输入用户名和密码的情况下安全地访问 Git 仓库,这对于频繁提交更改的开发者来说非常方便。
4. 灵活性:SSH 协议允许你通过单个端口进行多种类型的操作,比如远程登录、文件传输和端口转发等,这对于需要从多个角度管理服务器的开发者来说很有用。
5. 支持高频操作:由于 SSH 的连接在初次建立后可以被重用,因此对于频繁的 Git 操作(如推送和拉取),SSH 可以提供更快的速度。
6. 网络穿透能力:在某些网络环境下,可能只有 SSH 端口是开放的。在这种情况下,SSH 成为了连接远程仓库的唯一方式。
7. 服务器配置:许多 Git 服务器(如 GitHub、GitLab)默认支持 SSH,而且提供了详细的配置指南,使得设置和使用 SSH 相对简单。
8. 权限管理:通过 SSH,管理员可以更精细地控制对 Git 仓库的访问权限,比如可以限制某些操作只能通过 SSH 进行。
总之,使用 SSH 可以提高 Git 操作的安全性和效率,对于开源项目和个人私有项目都是推荐的做法。
二、以Git for Windows为例安装
1.安装Git for Windows
如果你还没有安装Git for Windows,可以从适用于 Windows 的 Git (gitforwindows.org)或者Git - Downloads (git-scm.com)下载并安装。
2.打开Git CMD
安装Git后,在Windows开始菜单中找到“Git”文件夹,然后打开“Git CMD”。
3.生成SSH密钥
在Git CMD中执行以下命令来生成新的SSH密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这里,`-t rsa`指定密钥类型为RSA,`-b 4096`指定密钥长度为4096位,`-C`后跟的是你的电子邮件地址,这将作为密钥的注释。
按Enter键接受默认的文件位置(通常是`C:\Users\YourUsername\.ssh\id_rsa`)和文件名。
-
按下回车键后,系统会提示你输入保存密钥的文件路径。如果你不输入路径,它会默认在用户的家目录下创建一个
.ssh
文件夹,并在其中生成两个文件:id_rsa
(私钥)和id_rsa.pub
(公钥)。 -
接下来,系统会要求你输入一个密码(passphrase)。这是可选的,但建议设置一个,以增加私钥的安全性。如果你不希望每次使用密钥时都输入密码,可以直接按回车键跳过,由于之前已经创建过所以这里提示了是否覆盖
4.查看SSH公钥
生成密钥后,你可以使用以下命令来查看并复制你的SSH公钥:
如果在git bash中:
cat ~/.ssh/id_rsa.pub
如果在powershell中:
先切换到.ssh
文件夹,这里YourUsername是你实际的用户名:
cd C:\Users\YourUsername\.ssh
然后查看:
Get-Content .\id_rsa.pub
如果在CMD中:
先切换到.ssh
文件夹,这里YourUsername是你实际的用户名:
cd C:\Users\YourUsername\.ssh
然后查看:
type id_rsa.pub
这将显示你的公钥,你可以使用鼠标选中并复制它。如果你的公钥文件名不是id_rsa.pub
,请将命令中的id_rsa.pub
替换为实际的文件名,win系统也可以直接用编辑器打开文件查看密钥。
三、SSH公钥使用
1.将公钥添加到SSH服务器或代码托管平台
接下来,你可以将复制的公钥添加到你的SSH服务器或代码托管平台(如GitHub、GitLab,Gitee)的SSH密钥设置中。
2.测试SSH连接
在添加公钥后,你可以通过以下命令测试SSH连接是否成功:
ssh -T git@github.com
如果你使用的是GitHub以外的平台,需要将`git@github.com`替换为相应的SSH地址。
按照提示操作,如果一切设置正确,你应该能够成功连接到服务器。
记得要妥善保管你的私钥(id_rsa文件),不要与他人分享,并且确保它存放在安全的地方。
- SSH教程:SSH 教程 菜鸟教程 (cainiaojc.com)
- 女生友好版教程:【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github-CSDN博客
GIT常用命令图示( 源自B站:GeekHour)