一个设备,配置多个ssh key ,为不同git服务提供授权

用于使用OpenSSH密钥生成工具 (ssh-keygen) 生成一个新的SSH密钥对

1
ssh-keygen -t rsa -b 2048 -C

添加注释说明:指定邮箱地址

1
ssh-keygen -t rsa -b 2048 -C "your_email@example.com"

指定生成后的文件名称

1
ssh-keygen -t rsa -b 2048 -C "your_email@example.com" -f ~/.ssh/filename
    1. -t rsa:指定要创建的密钥的类型。在这种情况下,它表示应生成RSA密钥对。RSA(Rivest–Shamir–Adleman)是一种广泛使用的公钥密码体制,可用于安全数据传输。
    1. -b 2048:指定密钥中的位数。在这种情况下,它将密钥长度设置为2048位。通常来说,较长的密钥长度通常提供更高的安全性,但可能需要更多的计算资源。
    1. -C 选项用于添加注释,而注释通常包含与密钥相关的标识信息
    1. -f 选项用于指定生成的密钥文件的名称和路径。

在电脑上配置多个SSH,你可以使用SSH配置文件(通常是~/.ssh/config)来管理多个SSH主机。

这个配置文件允许你定义不同主机的参数,以及为每个主机指定别名、身份验证密钥等信息。

~/.ssh/config模板

1
2
3
4
5
6
7
8
9
10
11
12
# 第一个SSH主机
Host test1
HostName test1.github.com
User user1
IdentityFile ~/.ssh/test

# 第二个SSH主机
Host test2
HostName test2.test.com
Port 2000
User test2@test.com
IdentityFile ~/.ssh/test2

Host: 指定你为主机定义的别名。
HostName: 主机的实际地址或域名。
Port: 主机端口
User: 登录SSH的用户名。
IdentityFile: 指定身份验证密钥的路径,注意,不带后缀.pub

使用方式:

1
git clone git@test1.github.com:xx/xx.git

也可以如下使用:

1
2
3
git clone git@别名:用户名/xxx.git
# 例如
git clone git@test1:user1/xxx.git

最后,将各自的.pub文件内的公钥,配置到对应的仓库里的ssh key设置里。

如果配置后仍然提示:

Permission denied (publickey).
致命错误:无法读取远程仓库
就通过ssh-add -l 查看一下以上秘钥是否添加成功。

1
ssh-add -l

如下图显示,就是正常的

如果没有,则手动添加:

1
ssh-add ~/.ssh/test

这里的test就是刚才生成的test和test.pub的文件名