工作中一般会使用 git 进行代码提交,公司项目一般会为我们开启一个 git 账号,同时我们自己平常也会在 GitHub 中维护一些私人练习项目,这个时候就需要同时切换多个 git 账号,我们可以使用 SSH 方式登录进行代码提交,具体步骤如下:
- 1. 新增密钥
- 2. 将 ssh-key 添加到 ssh-agent 信任列表
- 3. 添加公钥到 git 账户中
- 4. 在 config 文件中配置
- 5. 验证
1. 新增密钥(ssh-key)
ssh-keygen -t rsa -C "邮箱地址"
执行完上述命令后, 会提示输入密钥文件保存路径, 默认为(C:\Users\用户/.ssh/id_rsa),你可以修改为你自己要保存的路径, 一般可以配置为:
C:\Users\用户/.ssh/id_rsa_key
后面 key 为你当前密钥的标识
输入回车后需要你输入密钥密码,添加确认后一路回车就可以正常生成一套密钥文件,其中包含公钥和私钥
查看.ssh目录,如果出现这两个文件说明已经成功生成了(config是自己手动创建的)
后缀为 id_rsa 的是私钥,存放在自己电脑中, id_rsa.pub 是公钥,需要配置到 git 账户中
2. 将 ssh-key 添加到 ssh-agent 信任列表
输入一下命令,出现 Identitiy added: ~/.ssh/id_rsa_key,就表示添加成功了。
ssh-add C:\Users\用户/.ssh/id_rsa_key
3. 添加公钥到 git 账户中
将公钥文件(id_rsa.pub)中内容拷贝到密钥框中,并输入对应标题加以描述就OK了
GitHub 中配置
GitLab 中配置
4. 在 config 文件中配置
打开.ssh目录下config文件并编辑,如果没有就新建一个,添加内容
Host github
Hostname github.com
IdentityFile C:\Users\用户\.ssh\id_rsa_key
User 用户名
Host:仓库网站的别名
(注:Host 就是可以替代 HostName 来使用的别名,而且后面验证是否成功需要这个名字)
HostName:仓库网站的域名(IP地址也可以)
User:用户名
IdentityFile:私钥的路径
5. 验证
经过上述步骤后就基本完成了, 最后我们可以输入下面命令进行验证下
ssh -T git@xxxx
这个命令中的xxxx就是上面config配置文件中的Host的值
一般第一遍会让你输入 yes 确认一下, 再次输入命令就可以了
6. 使用
使用的时候只需要选择 SSH 就可以了,之前默认的是 HTTPS
7. 常见问题解决
1. Windows ssh-add 报错 Error connecting to agent No such file or directory
解决步骤:
-
管理员身份启动 「Windows PowerShell」。
-
运行以下指令,检查
ssh-agent服务是否启动成功。get-service ssh* -
启动服务, 使用以下两条指令启动ssh-agent服务
Set-Service -Name ssh-agent -StartupType Manual Start-Service ssh-agent -
运行以下指令查看
ssh-agent已经添加的秘钥ssh-add -l -
重新添加
2. Key is invalid. You must supply a key in OpenSSH public key format
git 账号配置中你选错密钥了,应该是使用公钥,而你用成私钥了, 也就是用 id_rsa.pub 中的内容
3. fatal: Could not read from remote repository.
出现这错误一般是以下两种原因:
- 客户端与服务端未生成 ssh key
- 客户端与服务端的ssh key不匹配
重新按着上面步骤生成一遍就好了
4. error: src refspec master does not match any
github 新建项目默认选择 main 分支, 需要将 master 分支改为 main
git branch -m master main
也可以直接提交到 master 分支