![在 cron 上通过 ssh 执行 sudo](https://linux22.com/image/217547/%E5%9C%A8%20cron%20%E4%B8%8A%E9%80%9A%E8%BF%87%20ssh%20%E6%89%A7%E8%A1%8C%20sudo.png)
我有这个命令,在终端上执行时可以正常运行:
ssh someuser@someserver -t "sudo systemctl start someservice"
ssh不需要密码,有公钥可以连接,无需密码someuser
即可执行sudo启动。someservice
我需要将上述命令插入到 crontab 中。不幸的是它没有被执行;我怀疑问题是由于使用ssh -t
sudo 所需的伪终端而引起的。看来伪终端不能通过cron来实现(我的假设,没有确凿的证据)。
总而言之,我的目标是按时间间隔执行命令,无需交互。有什么想法如何按照现有方法对此进行排序吗?
欢迎替代工作。
答案1
正如我最初怀疑的那样,问题是ssh -t
。
解决方案,我在/etc/sudoers
SSH 服务器端添加了这个:
Defaults:someuser !requiretty
我说不清是做什么requiretty
用的。为了安全起见,我仅为用户禁用它,而不是全局禁用它。其他方面似乎并没有影响该用户。