当前位置: 首页 > 编程笔记 >

git配置多个SSH Key

谭坚诚
2023-03-14
本文向大家介绍git配置多个SSH Key,包括了git配置多个SSH Key的使用技巧和注意事项,需要的朋友参考一下

当有多个git账号时,比如:

  • 一个github,国际认可的仓库
  • 一个gitee码云,国内仓库,速度快

这两者如果邮箱不同的话,在生成第二个key的时候会覆盖第一个的key,导致一个用不了。

解决办法就是:

生成两个(或多个)不同的公私密钥对,用config文件管理它们。

1 步骤

我们假设原来在~/.ssh目录下已经生成了一个密钥对:

id_rsa
id_rsa.pub

1.1 生成第二个key

接下来我们生成第二个ssh key:

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

这里不要一路回车,我们自己手动填写保存路径:

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Gary/.ssh/id_rsa): /c/Users/Gary/.ssh/id_rsa_github
<剩下两个直接回车>

这里我们用id_rsa_github来区别原有密钥对,避免被覆盖。

完成之后,我们可以看到~/.ssh目录下多了两个文件,变成:

id_rsa

id_ras.pub

id_rsa_github

id_rsa_github.pub

known_hosts

1.2 打开ssh-agent

这里如果你用的github官方的bash,用:

ssh-agent -s

如果是其他的,比如msysgit,用:

eval $(ssh-agent -s)

略过这一步的话,下一步会提示这样的错误:Could not open a connection to your authentication agent.

1.3 添加私钥

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

如果提示文件或目录不存在,就使用绝对地址。

1.4 创建config文件

在~/.ssh目录下创建名为config的文件

添加一下内容:

# gitee and github
# 注意:多个Host公用一个公钥时,
# 对应的HostName和Port必须跟在Host后面
    Host gitee.com
    HostName gitee.com
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# gerrit
    Host gerrit.awaimai.com
    HostName gerrit.awaimai.com
    Port 8000
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gerrit

# 其他的统一用id_rsa文件登陆,或者密码。
# 注意:这里的第二行后面有个password,就是同时允许密码登陆
# 不然第一次没加公钥,密码也登陆不了,会提示错误:Permission denied (publickey,password).
    Host *
    PreferredAuthentications publickey,password
    IdentityFile ~/.ssh/id_rsa

其中,Host和HostName填写git服务器的域名。

IdentityFile指定私钥的路径。

如果在Linux系统下提示错误:Bad owner or permissions on /home/gary/.ssh/config

说明config权限过大,chmod命令调整:

$ chmod 644 ~/.ssh/config

然后在github和gitee码云上添加公钥即可,这里不再多说。

1.5 测试

然后用ssh命令分别测试:

ssh -T git@github.com

2 调试

如果到这里你没有成功的话,别急,教你解决问题的终极办法--debug

比如测试github:

ssh -vT git@github.com

-v 是输出编译信息,然后根据编译信息自己去解决问题吧。

就我自己来说一般是config里的host那块写错了。

3 关于用户名

如果之前有设置全局用户名和邮箱的话,需要unset一下

git config --global --unset user.name
git config --global --unset user.email

然后在不同的仓库下设置局部的用户名和邮箱
比如在公司的repository下

git config user.name "yourname" 
git config user.email "youremail"

在自己的github的仓库在执行刚刚的命令一遍即可。

这样就可以在不同的仓库,已不同的账号登录。

参考地址:

  1. http://www.jianshu.com/p/f7f4142a1556
  2. https://www.jianshu.com/p/b1eeb3f1a2c1
 类似资料:
  • 本文向大家介绍git ssh 配置多个账户的方法,包括了git ssh 配置多个账户的方法的使用技巧和注意事项,需要的朋友参考一下 一台电脑上有一个ssh key,在github上提交代码,由于其他原因 你可能会在一台电脑上提交到不同的github上,怎么办呢… 所以查了一下关于同机器多账号的ssh-key配置,在此记录一下。 操作步骤 如果我们Windows 系统上面已经有了ssh-key再创建

  • 你在 起步 中看到,可以用 git config 配置 Git。 首先要做的事情就是设置你的名字和邮件地址: $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com 现在,你会了解到许多更有趣的选项,并用类似的方式来定制 Git。 首先,快速回忆下:Git 使用

  • 问题内容: 我目前正在构建一个库以对我的一些代码进行模块化,并且我遇到了Hibernate的问题。 在我的主应用程序中,我有一个hibernate配置来获取运行所需的信息,但是我的库中也需要hibernate,因为我想要的某些对象可以在其他应用程序中使用。 当我启动两个hibernate设置的tomcat服务器时,出现错误,指出无法解析bean,并且说我的查询中缺少位置参数的bean。但是,当我仅

  • 1-我有一个带有Spring Boot的API,我需要配置两个DBMS(MySQL和Postgres)。 2-对于每个DBMS,我需要配置不同的配置文件。(Dev,Prod) 遵循我的MySQL配置类: 我以为我的出口是: 重要: 当我将配置文件配置为连接到我的MySQL Dev数据库时,我只想连接到它。我想要同样的结果,当它是MySQL的Prod的基础时。 当我将配置文件配置为连接到我的Post

  • 我们可以配置多个HttpSecurity实例,就像我们可以有多个块抑郁。关键在于对WebSecurityConfigurationAdapter进行多次扩展。例如下面是一个对/api/开头的URL进行的不同的设置。 @EnableWebSecurity public class MultiHttpSecurityConfig { @Autowired public void con

  • 在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git 各平台安装包下载地址为:http://git-scm.com/downloads Linux 平台上安装 Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。 在有 yum 的系统