パスワードなしでリモートでsshコマンドとsudoコマンドを実行する方法

パスワードなしでリモートでsshコマンドとsudoコマンドを実行する方法

「admin」ユーザーにはSSHセッションを許可しますが、「root」ユーザーにはSSHセッションを許可しないように構成されたLinux(debianベース)サーバーがあります。両方のアカウントは同じパスワードを共有するため、何とかリンクされます。

管理者としてSSHセッション中に「root」ユーザーに切り替えない限り、コマンドを実行するには「sudo」が必要です。

システムの起動時にも時々実行する必要があるいくつかのサービスがあります。私は現在、プライベート/公開鍵メカニズムを使用してサーバーからリモートでコマンドを実行しています。いくつかのコマンドは手動で入力され、他のコマンドは私が実行したシェルスクリプトでした。現在のコマンドがsudoを使用している場合、サーバーはまだパスワードを要求します。

Q:パスワードを入力せずに「admin」ユーザーとしてリモートでそれを実行するにはどうすればよいですか? sudoの要件を満たすためにプライベート/公開キーを使用できますか?それとも、ユーザー「root」でシェルスクリプトを起動する方法はありますか?

sudoを使ってパスワード入力を避けることはできますか?そうでなければ、私のような状況には他にどのようなオプションがありますか?

ベストアンサー1

特定のコマンドに対してパスワードをスキップするようにsudoに指示できます。

例えば/etc/sudoers

archemar  ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*

これにより、以下を使用できます。

sudo -u www-data /bin/rm -rf /var/www/log/upload.*

パスワードのないArchemarを使って。

気づく

sudo -u www-data rm -rf /var/www/log/upload.*

(*)rmのため動作しません(パスワードを求めます)。/bin/rm

編集するにはコマンドを/etc/sudoers使用してください。visudo

高度なレベルに達すると/etc/sudoers.d


(*)最新のオペレーティングシステム(2022年頃のredhat 7.x)のこれらの変更により、rmパスが一致した場合に使用できます。/bin/rmsudoers.confrm

おすすめ記事