云网牛站
所在位置:首页 > Linux教程 > git使用不同的ssh key访问不同的仓或多台电脑使用同一个ssh key

git使用不同的ssh key访问不同的仓或多台电脑使用同一个ssh key

2018-07-03 10:06:55作者:jersonSun稿源:linux站

使用的操作系统是Ubuntu 18.04 LTS,在工作中经过会碰到一台电脑需要使用多个key来访问多个git仓,或者是多台电脑使用同一个key来访问一个git仓,下面就个人碰到的这个问题做一下记录,供后来的人参考。

 

1、生成两个站点用的SSH-Key

$ ssh-keygen -t rsa -C "email_1@xxxx.com” -f ~/.ssh/id-rsa

$ ssh-keygen -t rsa -C "email_2@xxxx.com” -f ~/.ssh/github-rsa

此时在~/.ssh 文件夹下应该出现了4个文件:id-rsa、id-rsa.pub、github-rsa、github-rsa.pub

分别将他们的公钥文件(id-rsa.pub,github-rsa.pub)内容配置到对应的git仓上。

 

2、添加私钥

$ ssh-add ~/.ssh/id-rsa

$ ssh-add ~/.ssh/github-rsa

如果执行ssh-add时提示”Could not open a connection to your authentication agent”,可以现执行命令:

$ ssh-agent bash

# 然后再运行ssh-add命令。

# 可以通过 ssh-add -l 来确私钥列表

$ ssh-add -l

# 可以通过 ssh-add -D 来清空私钥列表

$ ssh-add -D

*如果是与其他电脑使用同一个 ssh key 的话,只需要将私钥文件保存到电脑,然后在step 3中配置相应HostName的IdentityFile。

 

3、修改配置文件

# 若.ssh目录下无config文件,那么创建

touch config

# 添加以下内容

# gitlab

Host gitlab.com

HostName gitlab.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/id-rsa

IdentitiesOnly yes

# github

Host github.com

HostName github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/github-rsa

IdentitiesOnly yes

下面逐行解释:

Host github.com是用来指定该key的Host名字,此处必须使用本地repo的hostname github.com。

Hostname github.com,此处指定Host对应的具体域名,这里跟Host保持一致。(Host跟Hostname可以不一致,但是Host必须跟repo的hostname保持一致,也就是git到时候会用自己repo的hostname来ssh配置文件里面找是不是有对应的Host,找到了就使用该配置,具体访问的域名会采用HostName)  

IdentityFile ~/.ssh/id-rsa,这行最为关键,指定了该使用哪个ssh key文件,这里的key文件一定指的是私钥文件。之前我们生成了新的私钥文件~/.ssh/id-rsa。

IdentitiesOnly yes是只接受SSH key 登录。

PreferredAuthentications publickey,PubkeyAuthentication设为no可强制使用密码验证方式登陆。

另外你还可以把AuthenticationMethods设为publickey,password publickey,keyboard-interactive这样你就同时需要私钥和密码才能登录。

 

4、尝试从现有仓库克隆并进行追踪

git clone --progress -v  http://192.168.53.180/XXXXX/XXX.git /var/www/html/

 

相关主题

Ubuntu18.04系统下使用ssh keys实现免验证登陆远程服务器

精选文章
热门文章