1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 如何用Jenkins通过SSH远程控制主机执行命令

如何用Jenkins通过SSH远程控制主机执行命令

时间:2024-03-20 00:19:59

相关推荐

如何用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啦。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。