我正在使用以下命令尝试重新启动服务
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
并不总是需要更高的权利。