次のコマンドを使用してサービスを再起動しようとしています
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"
を実行すると動作し、サービスのステータスを確認できます。
まあ、これを修正する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
は常に昇格した権限を必要とするわけではありません。