远程重新启动服务并出现 ssh 和 sudo 错误

远程重新启动服务并出现 ssh 和 sudo 错误

我正在使用以下命令尝试重新启动服务

ssh username@server "systemctl restart storeapp.service"

但是我收到以下错误消息。

Failed to stop storeapp.service: Interactive authentication required.

然后我尝试了

ssh -t username@server "systemctl restart storeapp.service"

这会失败,因为它没有使用正确的用户名进行身份验证,并且跳过了username@server其他用户。 Authenticating as : otheruser。我已经设置了 ssh 密钥。我怎样才能克服这个?或者这是系统管理员权限问题?

如果我运行ssh username@server "systemctl status storeapp.service"它,我就可以看到我的服务的状态。

答案1

嗯,最简单的解决这个问题的方法可能是添加:

<username> ALL = NOPASSWD: /bin/systemctl restart storeapp.service

对于 中的文件/etc/sudoers.d,类似于:/etc/sudoers.d/storeapp在目标服务器上。

这将允许您运行该命令,sudo systemctl restart storeapp.service而不会提示您输入密码。


工作示例使用ufw
在目标主机上(Ubuntu 18.04):

sudo cat /etc/sudoers.d/ufw 
maulinglawns ALL = NOPASSWD: /bin/systemctl restart ufw

在您的服务器上:

ssh -t maulinglawns@<remote> 'sudo /bin/systemctl restart ufw'
maulinglawns@<remote>'s password: 
Connection to <remote> closed.
echo $?
0

正如你从上面看到的,我被提示一次(因为我不使用密钥),但不适用于命令sudo。退出状态告诉我们,我们成功地在ufw没有密码的情况下重新启动。我也可以通过检查来验证这一点/var/log/syslog


显然,这只有在你有的情况下才有效A) root访问目标服务器,否则b)询问友好的系统管理员这是否可行和/或可接受。如果C)visudo编辑/创建 sudoer 文件时始终使用!

如果我运行ssh username@server "systemctl status storeapp.service"它,我就可以看到我的服务的状态。

是的,status并不总是需要更高的权利。

相关内容