在ssh上使用sudo运行多个命令

问题描述 投票:0回答:1

我使用的是Redhat 7.8系统,并试图从远程Jenkins调度器运行一个类似的命令。ssh userA@host sudo -u userB -- sh -c 'whoami; whoami'输出是

userB

userA

我希望输出为。

userB

userB

无法修复这个。尝试了sudo选项,如 -i, -s-- sh -c

sudoer文件有如下配置。

userA ALL=(userB) NOPASSWD: ALL

shell sudo
1个回答
0
投票

问题是单引号被删除了,作为 ssh 构造一条命令传递给远程shell,所以你真正运行的是

sudo -u userB -- sh -c whoami; whoami

一般情况下,你总是希望传递一个单一的字符串参数给 ssh而不是让它将多个参数组合成一条命令。

ssh userA@host "sudo -u userB -- sh -c 'whoami; whoami'"
© www.soinside.com 2019 - 2024. All rights reserved.