您可能会遇到以下情况
fatal: unable to accesshttps://github.com/xxxx/xxx.git/: SSL certificate problem: unable to get local issuer certificate
或者类似的情况,此时,您就需要SSH来帮助建立连接
生成SSH公钥
公钥可以用来添加到 GitHub、GitLab、Gitee 等平台的 SSH Keys 设置中,之后就可以免密码使用
git clone git@github.com:xxx/xxx.git的形式拉取代码。
- 第一步 打开终端
- Windows:打开 Git Bash(如果安装 Git 时选择了 Git Bash,没有的话可以安装 Git for Windows 或使用 WSL)
- macOS:打开 终端(Terminal)
- Linux:打开常用的终端
- 生成密钥
若您需要额外配置保存路径,请跳转到第三步
ssh-keygen -t ed25519 -C "your_email@example.com"注意:把 your_email@example.com 换成自己的邮箱(比如你注册 GitHub 用的邮箱),这只是个标签,不是必须真实的。
如果你的系统不支持 ed25519(非常少见),则用 RSA 算法
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"- 设置密钥保存路径
ssh-keygen -t ed25519 -C "your_email@example.com" -f "D:/xxxx/xxxx/id_ed25519"- -f 参数:指定私钥的完整路径(公钥会自动生成到同一目录,文件名加 .pub 后缀)。
- 路径使用正斜杠 /,Git Bash 能识别;也可以使用双反斜杠 \,但推荐正斜杠。
如果系统不支持 ed25519,改用 RSA:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f "D:/xxxx/xxxx/id_rsa"- 设置密码(可选)
系统会提示:
Enter passphrase (empty for no passphrase):- 如果你想增加安全性,输入一个密码(输入时不显示),然后回车确认。
- 如果不想设置密码,直接按回车(留空) 再次输入相同的密码确认(如果上一步留空则直接回车)。
- 成功生成
您会看到类似这样的输出:
Your identification has been saved in /c/Users/你的用户名/.ssh/id_ed25519Your public key has been saved in /c/Users/你的用户名/.ssh/id_ed25519.pubThe key fingerprint is:...- 查看并复制公钥
方法A:终端直接显示
cat ~/.ssh/id_ed25519.pub如果用的是 RSA:
cat ~/.ssh/id_rsa.pub
它会输出一行以 ssh-ed25519 或 ssh-rsa 开头的文本,复制整行内容。
方法 B:用文本编辑器打开文件
- 找到生成SSH路径下的
.pub文件,打开后复制
您现在复制的内容就是公钥,类似于:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP1q2w3e4r5t6y7u8i9o0p... your_email@example.com- 其他问题
- 路径中不要有空格问题:路径包含中文和空格,务必用双引号将整个路径括起来。
- Git Bash 与 Windows 路径转换:
D:/开头是 Git Bash 支持的格式;如果用系统cmd执行ssh-keygen,路径应写为D:\xxx\...并用双引号括起来。建议全程使用 Git Bash。
注意:私钥(没有 .pub 后缀的那个文件)千万不要泄露给别人。
将公钥添加到代码托管平台
教程中使用GitHub作为演示,其它的平台步骤也大差不差
在 GitHub 上添加公钥
- 登录 GitHub 账号。
- 点击页面右上角的 个人头像,在下拉菜单中点击 Settings。
- 在左侧的边栏菜单里,点击 SSH and GPG keys。
- 点击右上角的绿色按钮 New SSH key(或 Add SSH key)。
- 在弹出的表单中:
- Title(标题):可以输入一个便于识别的名称。
- Key type(密钥类型):保持默认的
Authentication Key即可。 - Key(密钥):将从第一步复制的完整 SSH 公钥粘贴到这个文本框中。
- 点击 Add SSH key 按钮,有时网站会要求你再次输入 GitHub 密码进行确认。
修改SSH配置文件
- 定位文件:
- 目标路径:
C:\Users\<你的Windows用户名>\.ssh\config(<你的Windows用户名> 要换成你的账户名)。 - 快速定位:在 Git Bash 里输入
cd ~/.ssh/并按回车,就能直接定位到.ssh文件夹。 - 创建文件:如果文件夹里是空的,可以右键新建一个文本文件,然后重命名为
config(注意:没有 .txt 后缀)。
- 目标路径:
- 编辑文件
- 用记事本或其他文本编辑器打开
config文件,在末尾换行后粘贴以下内容:
- 用记事本或其他文本编辑器打开
Host github.com Hostname ssh.github.com User git Port 443 IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes
IdentitiesOnly yes指令的作用是强制 SSH 客户端只使用配置文件(或命令行)中显式指定的密钥进行认证,而忽略 SSH Agent 中加载的其他所有密钥
若您修改了SSH密钥的位置,则把 IdentityFile 后面的路径改成新路径,例如:
IdentityFile "D:/xxxx/xxxx/id_ed2551"验证连接是否成功
可以在Bash中简单测试
ssh -T git@github.com如果配置成功,您会看到一条包含 GitHub 用户名的消息,例如:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.现在您就可以使用 SSH 方式来操作你的远程仓库了。
git clone git@github.com:用户名/仓库名.git已有仓库修改为SSH
若您已经拥有一个仓库,将您的远程仓库地址从 HTTPS 改为 SSH 即可。
查看当前远程仓库地址:
git remote -v如果看到类似 :
origin https://github.com/xxxx.git (fetch)origin https://github.com/xxxx.git (push)修改为 SSH 地址
git remote set-url origin git@github.com:{您的用户名}/{您的仓库名称}.git验证修改
git remote -v现在应该显示SSH地址了
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时










