Jenkins配置远程服务器之Publish over SSH、SSH Servers、以及Linux系统生成RSA公私密钥

本文介绍了如何使用Jenkins的Publish Over SSH插件进行远程服务器的Shell命令执行和文件传输。详细阐述了密码验证和密钥验证两种方式的配置步骤,并针对密钥验证中可能出现的私钥无效问题提供了解决方案,包括检查私钥格式和生成旧格式密钥。最后,展示了在项目构建中如何使用该插件进行自动化部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:
1、Publish Over SSH 插件是通过SSH连接远程服务器,可以远程执行Shell命令或传输文件
2、有两种验证方式,密码方式和秘钥方式
3、前置条件:需要安装 Public over SSH 插件

一、密码验证方式

1、位置:Jenkins 》系统管理 》系统配置》Publish over SSH

2、添加 SSH Servers

远程路径必须已经存在 

3、点击Test,连接成功

二 、密钥方式

1、进入到远程目录,在目录节点下执行如下命令,生成rsa密钥

#生成rsa密钥,回车
ssh-keygen -t rsa

#把公钥内容追加到认证文件中
cat id_rsa.pub >> authorized_keys

#授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys

在 //root/.ssh 目录下生成两个密钥文件,需要把公钥追加到authorized_keys中:
id_rsa:私钥
id_rsa.pub:公钥

2、把 id_rsa 私钥内容添加到 Publish over SSH 的 key 中

或者放到 Server 配置中也行

连接测试报错:
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@73c5aba9]

报私钥无效,一般有两种原因:
(1):可能是你配置到jenkins里的私钥没有携带起止标志-----BEGIN RSA PRIVATE KEY-----或-----END RSA PRIVATE KEY-----,这两个是要带着的
(2):如果你是最新版本的docker镜像安装的jenkins容器,那么原因可能是容器内ssh版本太高,生成的私钥格式不被新版本ssh认可。解决方案是手动生成旧格式的秘钥
(3):生成旧的格式密钥,如下:

#生成rsa密钥,回车
ssh-keygen -m PEM -t rsa -b 2048

#把公钥内容追加到认证文件中
cat id_rsa.pub >> authorized_keys

#授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys

说明:
(1):.ssh文件夹、id_rsa、id_rsa.pub 权限为700。authorized_keys权限为600
(2):ssh-keygen -m PEM -t rsa -b 2048:
-m 参数指定密钥的格式,PEM是rsa之前使用的旧格式
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位

3、解决以上问题后,加入旧的私钥内容,连接成功

点击【Test Configuration】,测试连接,显示Success即可,点击应用

三、使用

1、在项目构建配置中,增加构建步骤

2、选择后,添加服务器、执行命令等,点击应用保存

3、构建测试,查看控制台输出
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值