因为最开始的开始是在windows上配置的jenkins,且本机上存在多个sshkey,因此在jenkins设置git的sshkey时遇到如下问题:
1、本地有多个sshkey,导致构建时 提示
Started by user anonymous
Building in workspace C:\Users\dell\.jenkins\workspace\pythons
> git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git.exe config remote.origin.url git@xxxxxxxx.git # timeout=10
Fetching upstream changes from git@xxxxxx.git
> git.exe --version # timeout=10
> git.exe -c core.askpass=true fetch --tags --progress git@xxxxxxx.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
ERROR: Error fetching remote repo 'origin'
Finished: FAILURE
解决方法:
1、先将源码管理职位none,点击构建,构建无问题
2、在构建
输入 git clone 仓库地址,在进行构建,此次构建失败,提示无权限
3、在命令行输入 :
set home=c:\users\dell
git clone git@xxxx.git
此次构建成功
4、设置set home原因jenkins在 windows 下安装会依赖宿主,故如此设置
5、在系统设置-全局属性中,增加键 -值对
在linux下存在多个sshkey如何管理(暂未尝试,只因整理以前的比较突然想到的,就去搜索了下)
因为我平时直接都是 sshkey ,然后回车,回车,回车,这样就导致了每次在生成sshkey时文件被覆盖,原来使用到的sshkey就不能继续工作了,所以一直遇到的问题都是,为什么我明明生成了sshkey 却不工作呢?然后今天就明白了。
如下内容来源于:https://www.zybuluo.com/yangfch3/note/172120
ssh公钥私钥同时生成且唯一配对。公钥用于远程主机,私钥存储在本地工作机,私钥用于在push(即write操作)时验证身份。因为公钥与私钥的唯一对应性,只有能和公钥配对的私钥才能对远程主机进行写操作!
我们在使用github时会发现有两个地方牵涉到公钥添加,一个是账号设置下的ssh setting,另一个是单个仓库设置的Deploy key。添加至前者则代表私钥主机可对当前远程主机的所有仓库进行写操作,添加至后者则代表私钥主机只能对当前仓库进行写操作。
每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到远程主机进行公私钥配对验证!
同一工作主机,多个ssh key
对于公共电脑,多人使用,解决方案需要做到以下几点:
多个用户ssh key共存,不覆盖
互不影响
push时智能地对应的私钥
解决方案:
ssh-keygen -t rsa -C "youremail@email.com" -f ~/.ssh/second
生成新的ssh key并命名为second
或者ssh-keygen -t rsa -C "youremail@email.com"
在询问时定义名称
此时ls出.ssh目录,会发现多了second公钥和私钥
id_rsa
id_rsa.pub
known_hosts
list.txt
second
second.pub
远程主机添加公钥
在~/.ssh/目录下新建config文件,用于配置各个公私钥对应的主机
# Default github user(first@mail.com) 默认配置,一般可以省略
Hostgithub.com
Hostnamegithub.com
Usergit
Identityfile~/.ssh/github
# second user(second@mail.com) 给一个新的Host称呼
Hostsecond.github.com// 主机名字,不能重名
HostNamegithub.com// 主机所在域名或IP
Usergit// 用户名称
IdentityFileC:/Users/username/.ssh/id_rsa_second// 私钥路径
注意:
每个邮箱能配置一个公私钥,邮箱是一个重要的身份识别标志
几个主机的命名不能相同;
私钥路径也可以写为~/.ssh/...;
如有需要还可以添加Port:xxxx端口配置。
测试连接情况
$ ssh -T git@second.github.com
现在开始使用新的公私钥进行工作吧
情景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