root権限でリモートサーバーでシェルを実行する方法

root権限でリモートサーバーでシェルを実行する方法

リモートサーバーでシェルスクリプトを実行したいです。スクリプトはパスワードを要求せず(またはsudoスクリプトで使用せずに)rootとして実行する必要があります。誰でも私にアドバイスを与えることができますか?

答え1

使用されたソリューションに加えて、sudoスクリプトに優しい設定が可能です(特定のコマンドのための追加のパスワードプロンプトなし)設定値セキュリティが容易ではないソリューションの場合は、command =制限を使用してSSH公開鍵認証を使用することをお勧めします。

これを行うには、まだ実行されていない場合は、rootユーザーに対してパスワードなしのログインを有効にし(PermitRootLogin without-passwordin)、/etc/ssh/sshd_config説明のようにcommand =パラメーターを使用してSSH公開鍵(またはこの場合に生成された特殊鍵)を追加する必要があります。/root/.ssh/authorized_keysこの回答

答え2

スクリプトにルートパスワードを入力する必要はありません。

プランA

サーバーのスクリプトを suid し、root またはユーザーグループのみを読み取り/実行可能にします。

chmod 4750 script.sh
chgrp your_group script.sh

このグループにユーザーを追加することを忘れないでください。

ssh user@XXXX '/path/to/script.sh'その後、スクリプトを実行できます。

プランB

SSH鍵を生成し、公開鍵をリモートサーバーにコピーします。この方法を使用するにはrootとしてログインする必要がありますが、パスワードは必要ありません。 (opensslを使用して秘密鍵を復号化することを忘れないでください)

秘密鍵を紛失すると非常に危険です。

答え3

rootユーザーなしでソリューションを保存する

クライアントでSSHキーを生成する

顧客: ssh-keygen

サーバーにコピー

仕える人:mkdir ~/.ssh

顧客:scp ~/.ssh/id_rsa.pub serveruser@server:~/.ssh/authorized_keys

ユーザーがパスワードなしでsudoを使用できるようにする

仕える人:

visudo
    serveruser ALL=(ALL) NOPASSWD: /usr/bin/foo /usr/sbin/bar

これで、次のコマンドを実行できます。

顧客:ssh serveruser@server 'sudo foo && bar'

// ssh -t ...Sudoを使用する必要のあるサーバー

関連情報