我正在使用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
答案 0 :(得分:0)
问题在于,ssh
中的单引号已被删除,这是构建一个传递给远程Shell的命令的一部分,因此您确实在运行
sudo -u userB -- sh -c whoami; whoami
通常,您总是希望将单个字符串参数传递给ssh
,而不是让它将多个参数组合到单个命令中。
ssh userA@host "sudo -u userB -- sh -c 'whoami; whoami'"