sudo与-u通过ssh -t在crontab中

我正在尝试创build一个使用sshlogin到远程服务器并以另一个用户身份运行脚本的cron作业。 我尝试:

* * * * * source $HOME/.keychain/$HOST-sh && sudo -u $USER $PATH/$SCRIPT 

但是这不起作用,因为没有为ssh指定-t选项。 cron作业需要获取keychain文件才能在没有密码的情况下工作,但是我不确定在这个实例中为哪里包括-sh选项。

你不需要钥匙串。

使用ssh-keygen,创build新的密钥对。 剥离目标服务器上的公钥,并用这样的命令作为前缀

command="/bin/ls" ssh-dss YOURKEEEEEEEYHERE ==comment

在远程主机上的.ssh / authorized_keys中

当设置的时候,你将能够使用无密码通过ssh在远程主机上正确运行该命令。

1)创build一个ssh密钥对“ssh-keygen -f / some / path / mykey”,不要给它一个密码

2)将其复制到远程用户的“authorized_keys”文件“ssh-copy-id -i / some / path / mykey remoteuser @ remotehost”

3)创build一个cron作业“echo”8 * * * * ssh -i / some / path / mykey remoteuser @ remotehost / path / to / some / command'| crontab – “

4)理想地编辑〜remoteuser / .ssh / authorized_keys,这样键的前缀是command =“/ path / to / some / command”

如果实际上你想要做的是以一个用户(例如remoteuser1)login到远程主机,然后使用sudo作为另一个用户(例如remoteuser2)运行一个命令。 您将需要在远程主机上设置sudo,以允许第一个用户以第二个用户的身份运行命令,而不需要提供密码,例如/ etc / sudoers –

remoteuser1 ALL =(remoteuser2)NOPASSWD:/ path / to / some / command

然后在本地主机“ssh -i / some / path / mykey remoteuser @ remotehost sudo / path / to / some / command”上执行cron作业