如何用Jenkins通过SSH远程控制主机执行命令
背景
Jenkins服务器运行在一台主机上,但实际的运行环境在另一台主机上,Jenkins要做的事是远程控制主机何时运行脚本,以及将运行后的结果显示在Jenkins上。
什么是SSH
ssh是一种网络协议,用于计算机之间的加密登陆。如果一个用户从本地计算机,使用SSH协议登陆另一台远程计算机,我们就可以认为这种登陆是安全的,即使被中途截获,密码也不会泄露。
步骤
(1)首先查看主机上SSH服务是否启动
通过 ps -ef | grep ssh 查看ssh服务是否运行,进程名为sshd。
如果没有运行,可以通过 service sshd start 命令来运行。
如果没有安装opensshserver,通过 apt-get install opensshserver 命令安装软件。
通过 ssh hostname@hostip 来连接远程主机。第一次连接时,系统会提示以下信息:
The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
ECDSA key fingerprint is ****************.
Are you sure you want to continue connecting (yes/no)?
上面的信息显示:无法确认主机192.168.56.102的真实性,不过知道它的公钥指纹,是否继续连接?
之所以会出现这样的信息,是因为client端无法保证接收到的公钥就是目标server端的,如果一个攻击者中途拦截client的登陆请求,向其发送自己的公钥,client端用攻击者的公钥进行数据加密,攻击者接受到加密信息后再用自己的私钥解密,就窃取了client的登陆信息了。
输入yes之后,该host就会被确认,并被追加到文件known_hosts中,然后就需要输入该host的密码。
更多关于SSH加密的详细信息,请参考SSH原理
(2)设置免密登陆
以后每次登陆都需要输入对方的密码,很麻烦。所以需要设置免密登陆:
首先在Jenkins server上生成一对密钥:
#sudo -u jenkins ssh-keygen -t ecdsa
#cd /var/lib/jenkins/.ssh
#cat id_ecdsa.pub >> authorized_keys
#chmod 0600 authorized_keys
这时你就会看到目录下有两个文件 id_ecdsa(私钥),id_ecdsa.pub(公钥)。然后把authorized_keys文件拷贝到remote host的~/.ssh/目录下
(3)Jenkins配置
首先下载Publish over SSH 插件。
在全局设置里滑到最底部
在Path to key 里填入之前生成的id_ecdsa文件的绝对路径,再配置一下SSH Servers,配置好之后,点击Test Configuration,如果出现SUCCESS,那么表示配置成功。
这里Name就是上图填的SSH server name。在Exec command里填入shell命令,就可以将shell命令通过SSH传给remote host啦。
如何用Jenkins通过SSH远程控制主机执行命令相关推荐
- SSH远程登录执行命令脚本
一.简述 运维工作中远程登录执行命令的脚本很常用,下面分享一下我常用的脚本 二.脚本内容 #!/bin/bashSCRIPT_NAME=`basename $0` CURRENT_DIR=$(cd & ...
- golang ssh 远程登录执行命令
执行系统命令 这个方法需要有一个环境的准备:与目标服务器建立免密码登陆,并且执行程序的用户与执行用户一致. import ("net""log""fm ...
- linux中spawn远程执行,linux 远程登录执行命令
@(Linux 命令脚本) 方便自动化运维部署,在多台机器上自动执行命令. ssh 需要输入密码, 所以使用 expect 进行交互,从执行文本读取远程主机 IP, 登录名和密码后执行远程登录,执行命 ...
- linux启动本地远程服务,如何使用SSH在本地控制远程服务器执行命令
通过SSH在本地控制远程服务器执行命令,如果每次都要登录到远程服务器真的好麻烦,起始通过SSH就可以远程执行 在本地使用 ssh $RemoteNode 可以在执行远程机器上的命令,例如 ssh ...
- unity连接linux服务器,C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令...
本文主要向大家介绍了C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 在Unity3D项目开发工具时需要用到S ...
- Linux 修改ssh远程登录端口命令
Linux 修改ssh远程登录端口命令 使用默认22端口登录服务器执行以下命令 sudo vi /etc/ssh/sshd_config 找到 #Port 22这一行,把#号注释去掉同时在下面新增一行 ...
- SSH远程登录RaspberryPi命令行响应缓慢问题
SSH远程登录RaspberryPi命令行响应缓慢问题 1. 问题 2. 分析 3. 解决 3.1 去掉PAM部分鉴权模块 3.2 去掉sshd的DNS设置 3.3 无线WiFi信号优化 方法一:if ...
- ssh远程登录执行shell脚本,找不到jps
直接运行jps命令正常,但是通过ssh远程登录后,执行shell脚本不能进行jps. 原因是有可能你的jps不在PATH中. 要注意bash在交互模式和非交互模式读取的配置文件是不同的,为了解决这种差 ...
- Python 实现远程服务器(ssh)批量执行命令
paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...
最新文章
- LinkedHashMap 源码详细分析(JDK1.8)
- 手游运营重度化,抓好论坛专区“预热战场”
- Docker与OpenStack集成实战
- Effective Java之静态工厂代替构造器(一)
- 华为值多少钱?院士倪光南:13000亿美元!超过苹果,碾压阿里!
- 双十一高并发场景背后的数据库RDS技术揭秘
- nginx fastcgi php-fpm的关系梳理
- 【Spring】Spring Bean 定义继承
- Subversion使用手記
- 浅析toString与valueOf
- yolov5环境配置-Anaconda3 + Pytorch1.8 + Cuda10.2 + cuDnn8.2.0 + opencv3.2.0
- csdn广告过滤油猴子(Greasemonkey)脚本(同样适用于暴力猴 tampermonkey/Violentmonkey 在浏览器Firefox/chrome都可以用,全部复制粘贴即可)
- 牛顿科茨matlab,牛顿-科茨(Newton-Cotes)公式算法.doc
- 汉服php素材,【福利】汉服裁剪制作图——收录大全
- Linux 内核 regulator 机制
- Tarjan求强连通分量
- activemq使用详解
- linux apk 拆分 odex,android apk反编译和odex转dex-Go语言中文社区
- 网络工程师,路由器4种模式详解:AP,Router,Repeater,Bridger (接入点,无线路由,中继,桥接)
- Ubuntu下安装搜狗输入法、截屏软件、谷歌浏览器
热门文章
- Microsoft Windows 8.1 使用记录
- java web监听器_JavaWeb监听器
- 惠普计划裁员16%:未来3年计划裁撤7000-9000个岗位
- jquery博客前端开发收集一份离职信以备不时之需
- 自媒体多平台分发教程
- 3D建模入门想学习Zbrush,你一定要了解的电脑配置要求!
- 大型旋转设备滑动轴承X、Y测点振动值说明(转载的)
- sqlserver 命令一览表
- python如何利用淘宝赚钱_Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!...
- 华硕飞行堡垒fx50 安装ubuntu18.04