
リモートサーバーでシェルスクリプトを実行したいです。スクリプトはパスワードを要求せず(またはsudo
スクリプトで使用せずに)rootとして実行する必要があります。誰でも私にアドバイスを与えることができますか?
答え1
使用されたソリューションに加えて、sudo
スクリプトに優しい設定が可能です(特定のコマンドのための追加のパスワードプロンプトなし)設定値セキュリティが容易ではないソリューションの場合は、command =制限を使用してSSH公開鍵認証を使用することをお勧めします。
これを行うには、まだ実行されていない場合は、rootユーザーに対してパスワードなしのログインを有効にし(PermitRootLogin without-password
in)、/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を使用する必要のあるサーバー