解决github和gitlab多账户管理ssh冲突问题

问题

解决github和gitlab多账户管理ssh冲突问题

1
2
3
git@gitlab.com: Permission denied
or
git@github.com: Permission denied

本地邮箱是识别的唯一手段,在实际生活中采用同一个邮箱对不同仓库进行开发可能性不是很大,因为公司会给予新员工新的邮箱,而本地的ssh只会标记一个邮箱,则使用不同邮箱会冲突

解决方法

基于config文件

  • 进入 /c/Users/user_name/.ssh 也就是 ~/.ssh

  • 将不同的ssh放入不同文件,生成密钥时选择对应文件

    1
    2
    3
    4
    ssh-keygen -t rsa -C 不同的邮箱 
    #不指定文件名则在 ~/.ssh 目录默认生成
    ssh-keygen -t rsa -f ~/.ssh/gitlabsshkey -C 不同的邮箱
    #指定gitlab的ssh生成的目录位置
  • 设置配置文件(在 ~/.ssh/config,没有就手动创建 touch config

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Host github.com  
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa #这里是GitHub生成sshkey的那个文件路径

    Host gitlab.com
    HostName xx.xx.xx #填写对应公司的仓库地址
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlabsshkey/id_rsa #这里是GitHub生成sshkey的那个文件路径

进行验证

1
2
3
4
ssh -T git@github.com #如果你用的是github
#Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@gitlab.com #如果你用的是gitlab
#Welcome to GitLab, xxx!

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!