前言
最近在开发项目的时候遇到一个问题,目前使用一台电脑,向不同的代码托管平台中提交代码,会报一些403类似错误,此时就需要配置多个SSH-Key来解决这个问题
。
查看已存在的 SSH 密钥
在生成新的 SSH 密钥前,请先确认是否需要使用本地已生成的SSH密钥,SSH 密钥对一般存放在本地用户的根目录下。
cat ~/.ssh/id_rsa.pub
在终端输入上述命令后,如果返回一长串ssh-rsa 开头的字符串, 说明已存在本地公钥。
升成SSH密钥
若在上述操作后未返回ssh-rsa开头的字符串,表示本地暂无可用 SSH 密钥,需要生成新的 SSH 密钥,可以按照以下命令来操作:
ssh-keygen -t rsa -f ~/.ssh/文件名 -C "邮箱地址"
执行完上述命令,可以执行下面命令,查看生成的密钥
cat 文件名.pub
上面两条命令按照个人需求可以多次执行(一定要区分文件名,做文件标识)
执行后,把生成的ssh密钥copy到对应代码托管平台里面
在~/.ssh目录下创建config文件
在创建的config文件中,按照个人需求添加多个host,每个host需要单独起一个别名作为标识,方便后续git操作。
host配置如下:
Host:自定义Host的名字,后续执行git操作需要使用
例如:Host github,执行操作命令:git clone git@github:......
HostName:这个是真实的域名地址
例如:github.com
IdentityFile:私钥文件的绝对路径
User:配置登录名
例如:xxx(github的用户名)
Port:端口号
PreferredAuthentications:登录时的权限认证
例如:publickey / password publickey / keyboard-interactive
config文件内容如下:(按照个人需求添加即可)
Host github
HostName git@github.com
IdentityFile ~/.ssh/文件名
PreferredAuthentications publickey
Host gitlab
HostName git@gitlab.com
IdentityFile ~/.ssh/文件名
PreferredAuthentications publickey
测试是否配置成功
ssh -T git@github.com
如果终端返回:Hi cary! You've successfully authenticated, but GitHub does not provide shell access.,证明配置成功。
如果配置了多个host,那就分别执行上述命令测试即可。