在 cron 上通过 ssh 执行 sudo

在 cron 上通过 ssh 执行 sudo

我有这个命令,在终端上执行时可以正常运行:

ssh someuser@someserver -t "sudo systemctl start someservice"

ssh不需要密码,有公钥可以连接,无需密码someuser即可执行sudo启动。someservice

我需要将上述命令插入到 crontab 中。不幸的是它没有被执行;我怀疑问题是由于使用ssh -tsudo 所需的伪终端而引起的。看来伪终端不能通过cron来实现(我的假设,没有确凿的证据)。

总而言之,我的目标是按时间间隔执行命令,无需交互。有什么想法如何按照现有方法对此进行排序吗?

欢迎替代工作。

答案1

正如我最初怀疑的那样,问题是ssh -t

解决方案,我在/etc/sudoersSSH 服务器端添加了这个:

Defaults:someuser !requiretty

我说不清是做什么requiretty用的。为了安全起见,我仅为用户禁用它,而不是全局禁用它。其他方面似乎并没有影响该用户。

相关内容