web-dev-qa-db-ja.com

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"を実行すると動作し、サービスのステータスを確認できます。

2
user3525290

まあ、これを修正するeasiest方法はおそらく追加することでしょう:

<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

上記からわかるように、プロンプトはonce(キーを使用しないため)ですが、Sudoコマンドではありません。そして、終了ステータスは、パスワードなしでufwを再起動することに成功したことを示しています。 /var/log/syslogを確認することでも確認できます。


明らかに、これはa)rootがターゲットサーバーにアクセスできる場合にのみ機能します。それ以外の場合はb)これが可能であり、 /または許容。 c)の場合、sudoerファイルを編集/作成するときは常にvisudoを使用してください!

ssh username@server "systemctl status storeapp.service"を実行すると動作し、サービスのステータスを確認できます。

はい、statusは常に昇格した権限を必要とするわけではありません。

2
maulinglawns