如何使用sudo权限从Jenkins运行远程ssh会话?

n8ghc7c1  于 12个月前  发布在  Jenkins
关注(0)|答案(3)|浏览(221)

使用“使用ssh在远程主机上执行shell脚本”选项,需要远程服务器上的sudo权限来更改权限并删除受保护的文件。如何使用此权限运行会话?
正在接收消息
sudo:对不起,你必须有一个tty运行sudo
当尝试运行sudo命令时。

iq3niunx

iq3niunx1#

要远程运行sudo,您有两个选项
1.允许用户运行sudo命令而无需密码。
sudo visudo附加到/etc/sudoers文件中。或者,您可以修改此行以仅允许某些sudo命令在没有密码的情况下运行
1.使用伪tty远程模拟tty,并在需要时输入sudo密码。
为此,请运行ssh -t username@host command_to_execute

r55awzrz

r55awzrz2#

如果远程服务器接受root用户的直接登录,您可以简单地执行以下操作:

ssh -l root yourserver command_to_execute

字符串
类似的语法是:

ssh root@yourserver command_to_execute


请注意,允许root用户通过ssh登录到远程服务器并不总是一个好的解决方案。更好的解决方案是更改所有者/权限,以允许非root用户修改受保护的文件。

bzzcjhmw

bzzcjhmw3#

关于ubuntu22.04

sshCommand(remote: remoteConfig, command: 'echo 1 | sudo -S systemctl daemon-reload')

字符串
这样使用它

stage("ssh upload") {
    steps {
      withCredentials([sshUserPrivateKey(
              credentialsId: "${REMOTE_CRED}",
              keyFileVariable: "privateKeyFilePath"
      )]) {
        script {
            remoteConfig = [:]
            remoteConfig.name = "my-remote-server"
            remoteConfig.host = "${REMOTE_HOST}"
            remoteConfig.port = 22367
            remoteConfig.allowAnyHosts = true
            remoteConfig.user = "ubuntu"
            // SSH private key
            remoteConfig.identityFile = privateKeyFilePath
            sshPut(remote: remoteConfig, from: 'cyberVillageServer', into: '/home/ubuntu/myapp/')
            sshCommand(remote: remoteConfig, command: 'echo 1 | sudo -S systemctl daemon-reload')
        }
      }  
    }
  }

相关问题