リモートサーバーでrootに変更を実行するにはどうすればよいですか?

リモートサーバーでrootに変更を実行するにはどうすればよいですか?

リモートコンピュータでrootに変更せずにローカルコンピュータでスクリプト/コマンドを実行する方法があるかどうか疑問に思います。

いくつかの背景

Capistranoを介していくつかのタスクを設定しようとしていますが、sudoアクセス権が必要です。約30台以上のサーバーがあり、/etc/sudoers手動で更新するのは痛いでしょう。だから、リモートで更新する方法があるかどうか疑問に思います。

ベストアンサー1

bashリモートシステムでローカルスクリプトを実行し、スクリプトを供給してリモートで実行できます。

$ ssh user@host 'bash -s' < script.sh

編集する

sudoリモートコンピュータで使用する必要があるコマンドを実行するには、ssh's -tオプションを使用してコマンドをに渡しますssh-t擬似端末ユーザーがsshパスワード入力などの実行コマンドと対話できるようにします。sudo

$ ssh user@host -t 'sudo foo'

sed>シェルリダイレクトは許可されていないため、ファイルを変更するにはリダイレクトの代わりにこの方法を使用することをお勧めしますsudo。また、コマンドのすべての変数sedがに渡されますssh

$ ssh user@host -t 'sudo sed -i "\$a text to insert" /path/to/file'

プロセス全体を自動化するには:

#!/bin/bash
SERVERS=( server1 server2 server3 )

for HOST in ${SERVERS[@]}; do 
    ssh user@${HOST} -t 'sudo sed -i "\$a text to insert" /path/to/file'

    if [[ $? -ne 0 ]]; then
        echo "ERROR: $HOST did not complete"
     else   
        echo "$HOST complete"
    fi   
done

おすすめ記事