Bem, a maneira mais fácil de corrigir isso provavelmente seria adicionar:
<username> ALL = NOPASSWD: /bin/systemctl restart storeapp.service
Para um arquivo em /etc/sudoers.d
, algo como: /etc/sudoers.d/storeapp
no servidor de destino.
Isso permitirá que você execute o comando sudo systemctl restart storeapp.service
sem que seja solicitada uma senha.
Exemplo de trabalho usando ufw
No host de destino (Ubuntu 18.04):
sudo cat /etc/sudoers.d/ufw
maulinglawns ALL = NOPASSWD: /bin/systemctl restart ufw
No seu servidor:
ssh -t maulinglawns@<remote> 'sudo /bin/systemctl restart ufw'
maulinglawns@<remote>'s password:
Connection to <remote> closed.
echo $?
0
Como você pode ver acima, sou solicitado uma vez (já que não uso uma chave), mas não para o comando sudo
. E o status de saída nos diz que conseguimos reiniciar ufw
sem senha. Que eu também posso verificar, verificando /var/log/syslog
.
Obviamente, isso só funcionará se você tiver a) root
acesso ao servidor de destino, caso contrário b) perguntará ao sysadmin, se isso for possível / ou aceitável. Se a) sempre usar visudo
ao editar / criar arquivos sudoer!
If I run
ssh username@server "systemctl status storeapp.service"
that works and I can see the status of my service.
Sim, status
nem sempre exige direitos elevados.