李锋镝的博客

  • 首页
  • 时间轴
  • 留言
  • 插件
  • 左邻右舍
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
  • 赞助
Destiny
自是人生长恨水长东
  1. 首页
  2. 原创
  3. 正文

Git配置多个SSH Key

2021年4月20日 17938点热度 0人点赞 0条评论

问题说明

当有多个git账号的时候,比如一个github,用于自己进行一些开发活动,再来一个gitlab,一般是公司内部的git。这两者你的邮箱如果不同的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,导致必然有一个用不了。

解决方法

我们可以在~/.ssh目录下新建一个config文件配置一下,就可以解决问题

具体步骤:

1. 生成ssh key

  • 生成第一个ssh key(这里我用的是公司的邮箱)
    进入C:\Users\用户名.ssh,点击鼠标右键-选择Git bash here,这一步很重要,不然在下面输入密钥名称的时候,会将密钥生成在当前打开git bash的路径下,比如我在桌面打开的git bash,就会生成在桌面上:

    ssh-keygen -t rsa -C "yourmail@example.com"

    在输入文件名及路径的时候,生成的密钥命名为id_rsa_gitlab,下面连续回车。(是否给密钥设置密码这个就看个人需求了)

    $ ssh-keygen -t rsa -C "yourmail@example.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/李锋镝/.ssh/id_rsa): id_rsa_gitlab
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in id_rsa_gitlab
    Your public key has been saved in id_rsa_gitlab.pub
  • 生成第二个ssh key(这里用的我的GitHub邮箱),步骤同上

    ssh-keygen -t rsa -C "yourmail@qq.com"

    这里生成的密钥命名为id_rsa_githab:

    $ ssh-keygen -t rsa -C "yourmail@qq.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/李锋镝/.ssh/id_rsa): id_rsa_githab
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in id_rsa_githab
    Your public key has been saved in id_rsa_githab.pub

2. 执行ssh-agent命令

ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。

ssh-agent

或者执行行如下命令:

exec ssh-agent bash
eval ssh-agent -s

3. 添加私钥,执行下面命令:

ssh-add ~/.ssh/id_rsa_github
ssh-add

4. 创建并修改config文件

创建config文件,将文件创建在.ssh目录下:

两种方法:

  1. 在windows下新建一个txt文本,然后将名字改成config(包括.txt后缀)
  2. 在git bash下,直接touch config即可创建一个config文件

配置内容如下:

# gitlab
Host gitlab.example.com
HostName gitlab.example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_kuaidao
User lifengdi

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User lifengdi

配置文件说明:

每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostName和IdentityFile两个属性即可。

Host的名字可以取为自己喜欢的名字,不过这个会影响git相关命令。

例如:

Host mygithub 这样定义的话,命令如下,即git@后面紧跟的名字改为mygithub
git clone git@mygithub:lifengdi/example.git
就相当于你配置的HostName真正的域名,映射成了Host后面的配置的名字

HostName                      #这个是真实的域名地址
IdentityFile                  #这里是id_rsa的地址
PreferredAuthentications      #配置登录时用什么权限认证--可设置publickey,password publickey,keyboard-interactive等
User                          #配置使用用户名

5. 将公钥添加到gitlab或者github上

.pub结尾的就是公钥,将其配置到git上的SSH keys即可。

测试密钥是否生效

输入如下代码:

# github
ssh -T git@github.com

# gitlab
ssh -T git@gitlab.example.com

显示:

# github(successfully表示就是成功了,如果有警告之类的,无视就行)
Hi lifengdi! You've successfully authenticated, but GitHub does not provide shell access.

# gitlab
Welcome to GitLab, lifengdi!

说明配置成功。

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/article/3339

相关文章

  • Git中.gitignore文件不起作用的解决办法
  • Docker核心概念解析及使用
  • 解决IDEA2024UI卡顿问题
  • iTerm2设置SSH自动连接服务器
  • 更多的Xshell配色方案
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Git
最后更新:2021年5月8日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Dylan

津ICP备2024022503号-3