文章目录
- Jenkins的安装与使用
- [git clone url的时候,url为http和ssh时候的区别](#git clone url的时候,url为http和ssh时候的区别)
Jenkins的安装与使用
下载jenkins
官网:https://www.jenkins.io/download/#downloading-jenkins
如下图:

下载好的jenkins如下图:

但是这个最新版的jenkins必须要求jdk版本到17,因此你电脑里面需要先下载jdk17。
然后jenkins安装好之后的安装目录如下图:

安装好之后,在浏览器输入localhost:8080,直接出现了如下页面:

需要去文件:C:\ProgramData\Jenkins.jenkins\secrets\initialAdminPassword中找密码,然后直接复制到管理员密码框里面。
输入管理员密码之后,如下图:

我这里直接选择的安装推荐的插件。我看了下大概会给我自动装上如下插件:

但是这些推荐插件下载的特别的慢,因为都是国外的地址。不开代理的话根本没办法下载,速度太慢了。因此下载推荐的插件的时候,本地网络必须要开网络代理。我自己亲身实测的是,就算开着网络代理,速度依然很慢。
后面我跳过了插件安装,直接进入到了输入管理员账号密码的界面,如下图:

然后我就进入了jenkins部署jar包的首页,如下图:

并且可以退出,退出之后可以登录管理员账号,如下图:

git clone url的时候,url为http和ssh时候的区别
首先我们先来看下,当我们想要从git仓库clone代码的时候,有两种选择,一种是通过http协议clone,另外一种是通过ssh协议clone。如下图:

我之前大部分时候用的其实都是通过http协议clone,但是如果是使用http协议进行clone,也就是下面这样,如下图:

第一次clone的时候,一般需要我们输入git的密码,这个密码是我的git仓库之前自己设置的用户密码。这里之所以不需要输入密码,是因为之前第一次的时候我已经输过了。
ok,我现在是要在jenkins上部署jar包构建流程,然后当我输入git仓库的项目地址的时候,它提示我http协议不能在jenkins里面使用,jenkins里面只能使用https,如下图:

但是我的git仓库我看了一下,clone的时候只有http协议的和ssh协议的,没有https协议啊,要怎么办呢?我把这段话丢给了ai,ai告诉我也可以使用ssh协议的地址。
然后我就想着如果我在git bash窗口,我git clone 加上ssh协议的url地址会怎么样呢?然后如下:

我前面让输密码的时候,输的密码和使用http协议的时候完全一样,但是这里就是提示我Permission denied权限拒绝。为什么呢?然后我就问了ai下面这个问题:
我的git clone url,当后面的事http的时候我输入密码可以拉取,但是为什么当后面是git的时候输入相同的密码提示没有权限?
ai的回答如下:
好的,用户遇到了一个非常经典且关键的协议认证差异问题。用户发现同一个GitLab仓库,用HTTP协议输入密码可以拉取,但用SSH协议(git@开头)用相同密码却提示无权限。这说明用户对HTTP和SSH两种协议的本质区别还不清楚,需要我清晰地解释这个核心差异。
用户应该是在配置Jenkins过程中遇到了这个障碍,可能已经尝试过多种方式但一直卡在认证环节。从对话历史看,用户已经尝试了生成SSH密钥、配置GitLab等多种操作,但可能还没有完全理解两种协议的根本不同。用户现在的困惑很具体,需要从协议层面解释清楚为什么"相同的密码"在两种场景下结果不同。
根据我掌握的计算机知识,HTTP和SSH是两种完全不同的认证机制。HTTP认证是面向"用户身份"的,通过用户名密码或令牌验证"你是谁";而SSH认证是面向"机器身份"的,通过密钥对验证"这台设备/密钥持有者是谁"。简单来说,HTTP问的是"你的账号密码是什么",SSH问的是"你的私钥是什么",两者根本不使用同一套验证系统。
用户提到的"相同的密码"在SSH上下文中实际上是被当作SSH密钥的密码短语(passphrase)来处理的,而不是GitLab账户密码。但即使用户正确输入了passphrase,如果对应的公钥没有添加到GitLab账户,认证依然会失败。
我需要用简洁明了的方式向用户解释这个根本区别,然后给出明确的解决路径。重点是要让用户明白,解决SSH认证问题不是输入什么密码,而是要完成"生成密钥对-添加公钥到GitLab-使用私钥认证"这个完整流程。
我总结了下,大概意思就是ssh协议是面向机器的,http协议是面向用户的。所以用户设置的git仓库的密码,只有在通过http协议的方式clone的时候才生效,但如果是通过ssh协议clone代码,用户设置的git仓库密码是无效的。因为ssh协议面向机器,用户必须要给git仓库一个公钥,然后自己保留一个私钥,当第一次clone代码的时候输入私钥即可。
所以这就需要用户生成一个公钥私钥对,如何生成呢?在Git Bash命令窗口输入命令:ssh-keygen -t ed25519 -C "1911491130@qq.com",如下图:

然后生成秘钥对保存在了C://Users/你的用户名/.ssh文件夹中,如下图:

看一下公钥和私钥长什么样子,如下图:


然后我们需要把公钥提供给git仓库,给它设置个SSH Key,如下图:

直接把公钥复制到上面的大框里面即可。
最后我们就可以在Git Bash里面通过SSH协议clone代码了,如下图:

中间会让你输入私钥,直接把上面的私钥输入进去就行了,只有第一次需要输入,后面再clone就无需输入了。