1. 配置单个ssh key
1.1. 原理
使用ssh命令行工具(git安装成功后默认就会有这个工具)生成一对非对称加密的密钥和公钥。公钥配置到代码托管平台中,私钥存储在本地。
1.2. 生成 ssh key
1 | ssh-keygen -t ed25519 -C "<注释内容>" |
参数说明
- -t: key的类型,表示生成密钥对使用的算法, 可以是 ed25519 或 rsa,建议使用ed25519。
- -C: 注释内容,可以是任意内容,用于标识该密钥对,大部分开发者会习惯把他设置成自己的邮箱。
输入这个命令后,会出现一系列提示,你可以一路按回车(Enter)使用默认设置即可。
设置成功后会在 ~/.ssh/ 目录下生成两个文件:
- id_ed25519:私钥文件,请妥善保管。
- id_ed25519.pub:公钥文件,将其配置到代码托管平台中。
1.3. 代码托管平台配置公钥
拷贝 id_ed25519.pub 文件的内容。
登录对应的代码托管平台,如GitHub、Gitee等,找到ssh key设置页面。将对应公钥的内容添加到代码托管平台中。
- GitHub: 右上角个人头像->Settings->SSH and GPG keys->New SSH key,也可以点击这个链接。
- Gitee: 右上角个人头像->设置->SSH公钥,也可以点击这个链接。
2. 配置多个ssh key
2.1. 应用场景
我们可能会在一台电脑上为多个项目写代码,代码会提交到不同的代码托管平台。如上班时公司的代码仓库可能会用gitlab来管理,下班后可能会往GitHub或Gitee上提交自己的开源项目的代码。
为了安全考虑,你可能会为两个不同的代码托管平台配置不同的ssh key。
这里以github和gitee为例,演示如何配置不同的ssh key。
2.2. 生成两个不同的key
1 | ssh-keygen -t ed25519 -C "<注释内容>" |
输入以上命令生成密钥对,在出现 Enter file in which to save the key
提示时,输入密钥对文件的保存路径,如:~/.ssh/github_id_ed25519
、 ~/.ssh/gitee_id_ed25519
。
这样你就有了两对不同名称的密钥对,可以通过 ls ~/.ssh
命令查看。
- github_id_ed25519 和 github_id_ed25519.pub
- gitee_id_ed25519 和 gitee_id_ed25519.pub
2.3. 修改config文件
在.ssh文件夹下面新建一个命名为config的文件,编辑如下内容
1 | # gitee |
2.4. 配置代码托管平台
参考1.3. 代码托管平台配置公钥配置公钥。将 github_id_ed25519.pub 的内容配置到github, 将 gitee_id_ed25519.pub 的内容配置到gitee。
2.5. 测试是否成功
1 | # 测试github是否成功 |
1 | ssh -T git@github.com |
第一次使用时会提示是否继续连接,输入yes即可。这是因为ssh不确定需要用哪个key来与github.com建立连接,输入yes后,会在 /.ssh/known_hosts
文件中记录github.com的公钥,下次再连接时就不会再提示了。