快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页新闻资讯软件测评 → 如何管理git的多个SSH KEY

如何管理git的多个SSH KEY

时间:2020-02-04 18:01:01人气:作者:快盘下载我要评论

工作室有一台公用电脑,使用它的开发人员混杂,使用时如何做到不同用户互不影响?如何实现多个ssh-key?如何实现多个ssh-key的配置?如何保证使用正确的私钥验证提交?


github提交验证机制

我们在个人的电脑上使用如下命令可生成ssh key

ssh-keygen -t rsa -C "youremail@email.com"

这时会在用户根目录下生成一个.ssh文件夹,一个私钥:id_rsa,一个公钥:id_rsa_pub,该公钥和私钥包含了你邮箱的信息,具有随机不可复现性!

ssh公钥私钥同时生成且唯一配对。公钥用于远程主机,私钥存储在本地工作机,私钥用于在push(即write操作)时验证身份。因为公钥与私钥的唯一对应性,只有能和公钥配对的私钥才能对远程主机进行写操作!

每次连接时ssh客户端发送本地私钥(默认~/.ssh/id_rsa)到远程主机进行公私钥配对验证!

同一工作主机,多个ssh key

对于公共电脑,多人使用,解决方案需要做到以下几点:

多个用户ssh key共存,不覆盖 互不影响 push时智能地对应的私钥

解决方案:

1. 生成新的ssh key并命名为second

ssh-keygen -t rsa -C "youremail@email.com" -f ~/.ssh/second

或者

ssh-keygen -t rsa -C "youremail@email.com"

在询问时定义名称

2. 此时ls出.ssh目录,会发现多了second公钥和私钥

id_rsa
id_rsa.pub
known_hosts
list.txt
second
second.pub

3. 远程主机添加公钥

4. 在~/.ssh/目录下新建config文件,用于配置各个公私钥对应的主机

5.

# Default github user(first@mail.com)  默认配置,一般可以省略
     Host github.com
     Hostname github.com
     User git
     Identityfile ~/.ssh/github
# second user(second@mail.com)  给一个新的Host称呼
     Host second.github.com  // 主机名字,不能重名
     HostName github.com   // 主机所在域名或IP
     User git  // 用户名称
     IdentityFile C:/Users/username/.ssh/id_rsa_second  // 私钥路径

注意:

每个邮箱能配置一个公私钥,邮箱是一个重要的身份识别标志 几个主机的命名不能相同; 私钥路径也可以写为 ~/.ssh/…; 如有需要还可以添加Port:xxxx端口配置。

6. 测试连接情况

ssh -T git@second.github.com

如果,正常的话,会出现如下提示:

Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

如果出现如下提示,则说明有权限问题:
  

Permission denied (publickey)

如果有权限问题的情况下,你对项目执行push操作的时候,会得到如下提示:

Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

多用户时出现权限问题的原因:

github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 GitHub ,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是 多用户 (first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即first的私钥,那么这个验证自然无法通过。

解决ssh权限问题:

通常一台电脑生成一个ssh不会有这个问题,当一台电脑生成多个ssh的时候,就可能遇到这个问题,解决步骤如下:

(1)、查看系统ssh-key代理,执行如下命令

ssh-add -l

以上命令如果输出 The agent has no identities. 则表示没有代理。如果系统有代理,可以执行下面的命令清除代理:

$ ssh-add -D

(2)、然后依次将不同的ssh添加代理,执行命令如下:

$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/second

你会分别得到如下提示:

2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)

2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)
2048 a7:f4:0d:f1:b1:76:0b:bf:ed:9f:53:8c:3f:4c:f4:d6 /Users/aysee/.ssh/aysee (RSA)

如果使用 ssh-add ~/.ssh/id_rsa的时候报如下错误,则需要先运行一下 ssh-agent bash命令后再执行 ssh-add …等命令

Could not open a connection to your authentication agent.

(3)、配置~/.ssh/config 文件

如果没有就在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器

# Default github user(first@mail.com)

Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa

# aysee (company_email@mail.com)
Host second.github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/second

Host随意即可,方便自己记忆,后续在添加remote是还需要用到。 配置完成后,在连接非默认帐号的github仓库时,远程库的地址要对应地做一些修改,比如现在添加second帐号下的一个仓库test,则需要这样添加:

git remote add test git@ second.github.com:ay-seeing/test.git

#并非原来的git@github.com:ay-seeing/test.git
ay-seeing 是github的用户名

(4)、测试 ssh

ssh -T git@github.com

你会得到如下提示,表示这个ssh公钥已经获得了权限

Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

7. 现在开始使用新的公私钥进行工作吧

情景1:使用新的公私钥进行克隆操作

git clone git@second.github.com:username/repo.git

注意此时要把原来的github.com配置成你定义的second.github.com

情景2:已经克隆,之后才添加新的公私钥,我要为仓库设置使用新的公私钥进行push操作

修改仓库的配置文件:.git/config 为

[remote "origin"]
        url = git@second.github.com:itmyline/blog.git

即可

之后就照平常一样工作就行啦!

相关文章

  • windows安装配置git和ToriseGit

    windows安装配置git和ToriseGit,--------------------------安装完成,接下在是配置---------------------------------完成后,点击,下面的save public key和save private key,报错公私钥到任意目录就行。———————————————配置完毕,可以使用了—————————————————(1)公钥添加到代码仓库,私钥,在windows中搜索,Pageant,打开如下图。2、安装语言包,直接运行语言包程序,安装...
  • Window使用ssh连接github-,写Vscode

    Window使用ssh连接github-,写Vscode,ssh连接github...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。