下面如何让jenkins与目标主机实现免交互。
系统管理-- 插件安装--搜索ssh --安装 Publish Over SSH
安装完成后,在jenkins端生成秘钥对(公钥id_rsa.pub 私钥id_rsa)
输入一次密码,以后就免密了。输入完可以用ssh 登陆试一下。
我们以最简单的一个例子来演示,部署一个Html页面到远程服务器的nginx网站目录下,实现页面上线。
首先,刚才jenkins配置ssh插件,注意填写远程服务器信息的那里的remote directory这个地方指的发送到远程服务器的哪个目录下。
在job配置中
上图的配置就是,将jenkins上的项目文件init.html发送到远端主机192.168.1.112的/var/www/html下
保存,退出。
远端主机的nginx配置:
点击构建。
结果:部署成功
例子比较简单,后期会更新java的部署过程。
方法/步骤安装部署Jenkins环境,下载所需要的插件,直接用IP加端口进行登录。在系统管理的系统设置里配置需要远程的服务器。新建节点,当新建节点与原有节点类似的时候,可以选择复制现有的节点。填写远程工作目录、标签、Host、Credentials等信息,点击save保存成功。此时在构建执行列表里就能看到新添加的节点的信息。在页面点击“+”,添加一个试图,在这里我的视图名称就叫:自动化部署。在“自动化部署”的视图下,点击“新建”按钮,新建一个项目,填写相应的项目名称,构建项目的类型(根据需要自行选择,在这里我选择的是构建一个自由风格的软件项目),点击“OK”进入项目配置页面。在项目配置页面,对项目的各种属性进行配置。在项目名称下,添加适当的描述,可以是阅读的人直观的了解项目。选择项目的jdk选项,在这里我选择JAVA-HOME。源码管理和构建触发器保持默认设置即可。构建环境的时候,勾选第一项,在SSHsite选择一开始添加的远程服务器节点即可。在构建的时候,在增加构建步骤里选择“executeshells”。在executeshell里面的command里面填写在需要执行更新 *** 作的命令即可。点击“保存”按钮,创建及完成。列表显示如下图。在列表页,选中name里的立即构建,即可构建项目在构建历史里,选择consoleoutput,即可查看构建的信息。 在jenkins部署脚本自动发布的时候,在系统设置中,会用到jenkins插件ssh-plugin所带的“ssh sites”模块,但是如果目标服务器的openssh是7.0版本的话,jenkins会不识别openssh7.0的算法,导致jenkins一直会报“can not connect!”的错误。(如下图)
我也是煞费苦心,研究了好多天才,查了无数的文档,才得以解决。
首先,连接不上的原因,是因为openssh7.0更新了新的算法,老版本不识别新版本的算法。
其次,也有部分原因是jenkins插件的升级,相关插件及版本,如下图。
最后,保证以上插件版本都没问题的情况下,修改目标服务器上面的/etc/ssh/sshd_config文件:
1.将 PasswordAuthentication 参数的值修改为yes,如果是注释掉的,把注释去掉。
2.在文件最下方添加:
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,hmac-sha1-96,hmac-md5-96
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,[email protected]
Ps:Ciphers 指定SSH-2允许使用的加密算法。
MACs 指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。
Kexalgorithms 指定可用的密钥(密钥交换)算法。
以上就是所有的步骤了。现在,再去jenkins里看下是不是好了。呵呵哒。
为此,楼主可是高兴了半天。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)