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

浙公网安备 33010602011771号