web-dev-qa-db-ja.com

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

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

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

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

質問:パスワードを入力せずにユーザー「admin」としてリモート実行するにはどうすればよいですか? sudoを満たすために秘密鍵/公開鍵を使用することは可能ですか?それとも、ユーザー「root」としてシェルスクリプトを開始する方法ですか?

Sudoを使用してパスワードを入力する必要を回避することもできますか?そうでない場合、それらは私のような状況に対する他の選択肢ですか?

5
izack

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.*

パスワードなしのアーキマーとして。

ご了承ください

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

rm/bin/rmと異なるため、機能しません(パスワードを要求します)。

必ずvisudoコマンドを使用して/etc/sudoersを編集してください。

上級レベルに達したら、/etc/sudoers.dに独自のSudoファイルを作成することをお勧めします。

12
Archemar

最も簡単な方法は、stdinがパスワードをサポートしている場合、Sudoからパスワードを提供することです(-Sキー)

ssh -t admin@remotehost "echo <yourpassword> |Sudo -S <yourcommand>"
3
user1700494

アカウントが何らかの方法でリンクされている場合、一方にSSHを許可し、もう一方に許可しないことは意味がありません。これが代わりに私がすることです:

  • rootに対してsshを有効にし、パスワードではなくsshキーでのみアクセスを許可する
  • 特定のコマンドにのみ使用される新しいキーを作成する
  • ルートのauthorized_keysに実行する必要のあるキーとコマンドを入力します。これにより、このキーで接続が確立されるとすぐにコマンドが起動します。

この方法では、呼び出し元はシェルを作成することも、他のコマンドを実行することもできません(たとえ提供されたとしても)。

ここで例を見ることができます: https://stackoverflow.com/questions/402615/how-to-restrict-ssh-users-to-a-predefined-set-of-commands-after-login = command=構文。キーの代わりに証明書を使用する場合、または構成オプションForceCommandを使用してグローバルに実行する場合は、コマンドを証明書に埋め込むことによって同じことを行うこともできます。

別の例については http://larstobi.blogspot.com/2011/01/restrict-ssh-access-to-one-command-but.html を参照してください(考慮に入れる必要があることを示しています)コマンドのパラメーター)

1
Patrick Mevzek

TouchIDを備えたMacBookを使用している場合は、Mac TouchIDを使用してSSH Sudoを構成できます(指紋、2FA)

https://medium.com/@prbinu/touch2Sudo-enable-remote-Sudo-two-factor-authentication-using-mac-touch-id-df638b7da594

コード: https://github.com/prbinu/touch2Sudo

0
Pcrack

Archemarの回答に追加するために、Sudoは、コマンドを実行するユーザーではなく、Sudoを実行しているユーザーのパスワードを要求します。 「admin」アカウントと「root」アカウントは「リンク」されており、同じパスワードを共有するとします。 「admin」アカウントのパスワードを受け入れるSudoに基づいてこの結論に達した場合(および「admin」のパスワードが変更されたときにパスワードSudoが変更を受け入れる)、これは正常ですSudoの動作。

0
Aaron