github配置sshkey及TortoiseGit(小乌龟)
github 配置 sshkey 及 TortoiseGit(小乌龟)
参考链接
前言
截至 2023 年 2 月, 部分最新的 linux 系统已默认禁用 rsa-sha1 签名算法, 故更新本文档生成 sshkey 使用到的签名算法为 id_ed25519
很多朋友在用 github 管理项目的时候,都是直接使用 https url 克隆到本地,当然也有有些人使用 ssh url 克隆到本地.然而,为什么绝大多数人会使用 https url 克隆呢?
这是因为,使用 https url 克隆对初学者来说会比较方便,复制 https url 然后到 git Bash 里面直接用 clone 命令克隆到本地就好了.而使用 ssh url 克隆却需要在克隆之前先配置和添加好 ssh key .
因此,如果你想要使用 ssh url 克隆的话,你必须是这个项目的拥有者.否则你是无法添加 ssh key 的.
HTTPS 和 SSH 的区别
- https 可以随意克隆 github 上的项目,而不管是谁的;而 ssh 则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 sshkey,否则无法克隆.
- https url 在 push 的时候是需要验证用户名和密码的;而 ssh 在 push 的时候,是不需要输入用户名的,如果配置 sshkey 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的.
1. github 配置 sshkey
1.1 配置 git 个人信息
配置个人用户信息和电子邮件地址
git config --global user.name “用户名”
git config --global user.email “你的邮箱”
git config --list (查看所有配置项)
1.2 添加 SSH 密钥
1.2.1 查看现有的 SSH 密钥
$ ls -al ~/.ssh
1.2.2 生成新 SSH 密钥
// 安装git后,在你电脑上打开cmd或 git bash,输入命令
// your_email@example.com为登录GitHub仓库的邮箱
ssh-keygen -t ed25519 -b 4096 -C "your_email@example.com"
//输入后会询问是否以输出额外文件去保存,这里推荐直接回车,
//直接回车会在.ssh文件夹 认生成id_ed25519 和id_ed25519.pub两个文件
//如果选择额外输出同样会生成类似的两个文件
Enter file in which to save the key (/c/Users/username/.ssh/id_ed25519):
// 如果你曾经配置过,现在要重新生成,会询问你是否覆盖,如果你第一次配置,则不会出现此询问
/c/Users/username/.ssh/id_ed25519 already exists.
Overwrite (y/n)?
// 接下来它会询问是否需要密码,建议直接回车,回车默认没有密码
Enter passphrase (empty for no passphrase):
// 再次输入密码,建议直接回车
Enter same passphrase again:
// 提示生成成功,请在C盘>用户>你的用户名>.ssh 去查看
Your identification has been saved in /c/Users/username/.ssh/id_ed25519
Your public key has been saved in /c/Users/bingq/.ssh/id_ed25519.pub
SHA256:略
The key's randomart image is:略
1.3 将 SSH 密钥添加到 ssh-agent
1.3.1 在后台启动 ssh-agent
$ eval "$(ssh-agent -s)"
> Agent pid 59566
1.3.2 修改~/.ssh/config文件以自动将密钥加载到 ssh-agent 中并在密钥链中存储密码
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
1.3.3 将 SSH 私钥添加到 ssh-agent 并将密码存储在密钥链中
$ ssh-add -K ~/.ssh/id_ed25519
2. 添加密钥到 GitHub
- 打开 /.ssh/id_ed25519.pub 文件,将内容复制到剪贴板
- 单击右上角头像
- 单击
Settings - 单击
SSH and GPG keys - 单击
New SSH Key - 填写
Title并将/.ssh/id_ed25519.pub文件内容粘贴到Key - 单击
Add SSH Key完成 - 如果出现提示,请确认你的 GitHub 密码
- 页面自动跳转后,你会发现你多了一个灰色的钥匙,这是因为你从未使用过这个 Key
3. 测试 SSH 连接
// 打开git bash 输入以下内容,通过该地址验证key
//git@github.com不用改成你的邮箱地址,验证地址就是这个
ssh -T git@github.com
// 询问你是否继续连接,输入yes
The authenticity of host 'github.com (xx.xxx.xxx.xx)' can't be established.
RSA key fingerprint is SHA256:略.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
// 如果成功,他会发出以下内容
// 如果失败,请尝试在GitHub上删除生成的key,然后重新添加,注意复制时末尾不要有空格(可能会影响)
// 如果还是失败,可以联系我
Warning: Permanently added 'github.com,xx.xxx.xxx.xx' (RSA) to the list of known hosts
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.
4. 配置总结
到这一步,便完成了 sshkey 的配置,你可以到 Setting>SSH and GPG keys 看到钥匙变绿,在 GitHub 仓库中复制仓库 ssh 地址进行克隆尝试,如果你不使用小乌龟,那么本文看到这里便可以了.
5. TortoiseGit(小乌龟)设置 pageant 开机自启动且自动加载 SSH Key
TortoiseGit 无法使用 git 生成的 ssh-key 需要转化为 ppk 公钥,然后就产生每天上班第一件事就是打开 Pageant ,然后去加载公钥,比较麻烦,现在我们把这件重复的事情设置为开机自启动
5.1 生成 ppk 文件
- 首先找到 TortoiseGit 的安装目录的 bin 目录,然后找到 puttygen.exe 运行 或是 window 键打开开始菜单,搜索 puttygen 点击运行
- 点击 conversions 中的 Import key 来加载 git 生成的 ssh key 文件
- 选择完毕后点击 save private key 按钮保存生成的 ppk 文件下面要用
5.2 加载 PPK 文件
- 首先找到 TortoiseGit 的安装目录的 bin 目录,然后找到 pageant.exe 运行 或是 window 键打开开始菜单,搜索 pageant 点击运行,他不会直接弹框,需要在任务栏中点击才有弹框
- 点击 add key 选择加载之前保存的 ppk 文件,直接 close 就可以,这样就直接可以使用 TortoiseGit 提交代码
- 但是这不是我们现在的最终目的,我们的最终目的是能自动启动加载,咱们接着往下设置
6. TortoiseGit(小乌龟)设置 pageant 开机自启动且自动加载 SSH Key
1.首先找到 TortoiseGit 的安装目录的 bin 目录,然后找到 pageant.exe 运行 或是 window 键打开开始菜单,搜索 pageant 右键打开文件夹所在位置创建并复制快捷方式
- window+r 输入 shell:startup;点击确定将复制好的快捷方式放入该目录下
3.右键属性中找到快捷方式,在目标后面拼上 ppk 文件的目录
至此我们的生成 ppk 文件并设置开机自启动就完成了,之后我们就可以安心的使用小乌龟提交代码,而不需要其他验证了.