我有一个远程 Linux 系统,可以通过 ssh 和公钥连接到它,然后执行以下命令:
sudo jetty restart
此系统上的此命令配置为允许任何人无需 sudo 密码即可执行。即 sudoers 文件可能如下所示
%develop ALL = NOPASSWD: /opt/scripts/jetty
这很棒,因为我们可以使用提升的权限执行此脚本,同时保持其他所有内容都被锁定。问题是,当尝试远程执行此命令时,总是要求我输入 sudo 密码。
me@home:~$ ssh -t -i ~/.ssh/identity [email protected] 'sudo jetty restart'
Password: .....? (I don't have the sudo password!)
有什么方法可以远程执行这个命令吗?
答案1
确保sudo
选择了正确的命令;如果有/usr/bin/jetty
或 之类的,则 sudoers 规则将不匹配。(请注意,~/.bashrc
使用 时会忽略您的 和 之类的文件ssh <host> <command>
,因此您的$PATH
自定义永远不会发生。)
sudo /opt/scripts/jetty restart
应该管用。