如何用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 插件。
在全局设置里滑到最底部
Publish over SSH配置
在Path to key 里填入之前生成的id_ecdsa文件的绝对路径,再配置一下SSH Servers,配置好之后,点击Test Configuration,如果出现SUCCESS,那么表示配置成功。
SSH server配置
这里Name就是上图填的SSH server name。在Exec command里填入shell命令,就可以将shell命令通过SSH传给remote host啦。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值