jenkins使用pulish over ssh遇到的sudo权限问题

背景:公司需要自动部署服务到测试环境,其中最后一个步骤是远程重启docker服务

方案:使用jenkins插件pulish over ssh,远程执行重启服务命:

stage('restart mservice '){

steps([$class: 'BapSshPromotionPublisherPlugin']) {
sshPublisher(
continueOnError: false, failOnError: false,
publishers: [
sshPublisherDesc(
configName:"mservice",
verbose: true,
transfers: [
sshTransfer(execCommand:"sudo docker restart service"), ]
)]
)
}

问题:

1、执行时报错:

sudo: sorry, you must have a tty to run sudo

解决方法:

将当前用户加到sudoers里

chmod u+w /etc/sudoers

vim /etc/sudoers

然后将Defaults requiretty 给屏蔽了 # Defaults requiretty

添加 userName ALL=(ALL) ALL

2、添加后执行还是报错:

sudo: no tty present and no askpass program specified

该问题是由于执行sudo尝试请求密码但sudo无权访问atty以提示用户输入密码的命令引起的。由于找不到tty,sudo回退到askpass方法但找不到askpass配置的命令,因此sudo命令失败。

解决方法:

将userName ALL=(ALL) ALL 改为userName ALL=(ALL) NOPASSWD:ALL

posted @ 2021-07-28 14:02  生命的流  阅读(937)  评论(0)    收藏  举报