背景

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远程控制主机执行命令相关推荐

  1. SSH远程登录执行命令脚本

    一.简述 运维工作中远程登录执行命令的脚本很常用,下面分享一下我常用的脚本 二.脚本内容 #!/bin/bashSCRIPT_NAME=`basename $0` CURRENT_DIR=$(cd & ...

  2. golang ssh 远程登录执行命令

    执行系统命令 这个方法需要有一个环境的准备:与目标服务器建立免密码登陆,并且执行程序的用户与执行用户一致. import ("net""log""fm ...

  3. linux中spawn远程执行,linux 远程登录执行命令

    @(Linux 命令脚本) 方便自动化运维部署,在多台机器上自动执行命令. ssh 需要输入密码, 所以使用 expect 进行交互,从执行文本读取远程主机 IP, 登录名和密码后执行远程登录,执行命 ...

  4. linux启动本地远程服务,如何使用SSH在本地控制远程服务器执行命令

    通过SSH在本地控制远程服务器执行命令,如果每次都要登录到远程服务器真的好麻烦,起始通过SSH就可以远程执行 在本地使用 ssh $RemoteNode    可以在执行远程机器上的命令,例如 ssh ...

  5. unity连接linux服务器,C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令...

    本文主要向大家介绍了C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 在Unity3D项目开发工具时需要用到S ...

  6. Linux 修改ssh远程登录端口命令

    Linux 修改ssh远程登录端口命令 使用默认22端口登录服务器执行以下命令 sudo vi /etc/ssh/sshd_config 找到 #Port 22这一行,把#号注释去掉同时在下面新增一行 ...

  7. SSH远程登录RaspberryPi命令行响应缓慢问题

    SSH远程登录RaspberryPi命令行响应缓慢问题 1. 问题 2. 分析 3. 解决 3.1 去掉PAM部分鉴权模块 3.2 去掉sshd的DNS设置 3.3 无线WiFi信号优化 方法一:if ...

  8. ssh远程登录执行shell脚本,找不到jps

    直接运行jps命令正常,但是通过ssh远程登录后,执行shell脚本不能进行jps. 原因是有可能你的jps不在PATH中. 要注意bash在交互模式和非交互模式读取的配置文件是不同的,为了解决这种差 ...

  9. Python 实现远程服务器(ssh)批量执行命令

    paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...

最新文章

  1. LinkedHashMap 源码详细分析(JDK1.8)
  2. 手游运营重度化,抓好论坛专区“预热战场”
  3. Docker与OpenStack集成实战
  4. Effective Java之静态工厂代替构造器(一)
  5. 华为值多少钱?院士倪光南:13000亿美元!超过苹果,碾压阿里!
  6. 双十一高并发场景背后的数据库RDS技术揭秘
  7. nginx fastcgi php-fpm的关系梳理
  8. 【Spring】Spring Bean 定义继承
  9. Subversion使用手記
  10. 浅析toString与valueOf
  11. yolov5环境配置-Anaconda3 + Pytorch1.8 + Cuda10.2 + cuDnn8.2.0 + opencv3.2.0
  12. csdn广告过滤油猴子(Greasemonkey)脚本(同样适用于暴力猴 tampermonkey/Violentmonkey 在浏览器Firefox/chrome都可以用,全部复制粘贴即可)
  13. 牛顿科茨matlab,牛顿-科茨(Newton-Cotes)公式算法.doc
  14. 汉服php素材,【福利】汉服裁剪制作图——收录大全
  15. Linux 内核 regulator 机制
  16. Tarjan求强连通分量
  17. activemq使用详解
  18. linux apk 拆分 odex,android apk反编译和odex转dex-Go语言中文社区
  19. 网络工程师,路由器4种模式详解:AP,Router,Repeater,Bridger (接入点,无线路由,中继,桥接)
  20. Ubuntu下安装搜狗输入法、截屏软件、谷歌浏览器

热门文章

  1. Microsoft Windows 8.1 使用记录
  2. java web监听器_JavaWeb监听器
  3. 惠普计划裁员16%:未来3年计划裁撤7000-9000个岗位
  4. jquery博客前端开发收集一份离职信以备不时之需
  5. 自媒体多平台分发教程
  6. 3D建模入门想学习Zbrush,你一定要了解的电脑配置要求!
  7. 大型旋转设备滑动轴承X、Y测点振动值说明(转载的)
  8. sqlserver 命令一览表
  9. python如何利用淘宝赚钱_Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!...
  10. 华硕飞行堡垒fx50 安装ubuntu18.04