一、配置ssh免秘钥登录
SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
1、基本用法
SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
$ ssh user@host
如果本地用户名与远程用户名一致,登录时可以省略用户名
$ ssh host
SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
$ ssh -p
2222
user@host
上面这条命令表示,ssh直接连接远程主机的2222端口。
2、ssh的免密码登录(基于密钥)
2.1、在客户端生成一对密钥(公钥/私钥)
基于空口令生成一个新的ssh密钥,以实现无密码登录:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
参数说明:
-t 加密算法类型,这里是使用rsa算法
-P 指定私钥的密码,不需要可以不指定
-f 指定生成秘钥对保持的位置
2.2、将客户端公钥发送到服务端(其他客户端),使用ssh-copy-id
用ssh-copy-id将公钥复制到远程机器中
$ ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
2.3 登录远程机器不用输入密码
$ ssh 用户名字@192.168.x.xxx
二、安装Publish over SSH插件
主界面——>系统管理——>管理插件——>可选插件——>右上角过滤框中输入“Publish over SSH”——>勾选安装
三、插件配置
主界面——>系统管理——>系统设置——>Publish over SSH
参数说明
Passphrase:SSH的密码
创建ssh key时指定,本文创建ssh key时默认为空。故,此处为空,不填写。
Path to key:SSH私钥的文件路径
私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径
Key:私钥
私钥导出后的文本内容
如果“Key”和“Path to key”都设置,则“Key”的优先级较高
Disable exec:禁止在目标机上执行命令
SSH Server 配置
指定远程服务器的ip,存放目录。可以配置多个ssh server ,jenkins自动将打包成果发送到多个远程服务器
参数说明
Name
SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在“SSH Server”中“Name”的下拉列表中,如下图:
Hostname
通过SSH连接到的机器的主机名或IP
Username
SSH服务使用的用户名,使用key进行连接时为key指定的用户名
Remote Derictory
运程机器上真实存在的目录,并且“Username”指定的用户要有访问此目录的权限,插件将把文件传送到此目录下。
配置完成后,可以 通过 “Test Configuration” 测试是否配置正确。
四、构建配置
参数说明
Name:
下拉选择一个 系统设置已配置的名字。
Transfer Set Source files:
需要上传的文件(注意:相对于工作空间根目录。
工作区根目录配置:系统管理->系统设置->主目录->高级->工作空间根目录
看后面的配置可以填写多个,默认用,分隔,)
target/maven-run-main-class-1.0-SNAPSHOT.jar
Remove prefix:
Source files”配置的路径中要移除的前缀
即: target
Remote directory:
远程目录,此目录是相对于“SSH Server”中的“Remote directory”的,如果不存在将会自动创建。
Exec command:
通过ssh连接远程服务器后,在远程服务器上执行的脚本。