ルートとして実行されるスクリプトがあります。 SSH 経由でリモートホストに接続し、ユーザー gol でスクリプトを実行します。ユーザー(gol)のSSHキーをリモートホストに追加しました。ただし、スクリプトが root として実行されているため、パスワードの入力を求められます。スクリプトの内容は次のとおりです。
ssh gol@remotehost '/home/scripts/script1.sh'
そのため、sshコマンドを実行する前にローカルユーザーに切り替えるようにコマンドを変更しましたが(golユーザーがsshキーを追加したため)、失敗しました。
su - gol -c ssh gol@remotehost '/home/scripts/script1.sh'
このスクリプトには別のスクリプトがあるため、rootとして実行する必要があります。
答え1
問題は、root
クライアントがrootとして実行されるため、デフォルトでSSHが秘密鍵を使用しようとすることです。まだrootとして実行したいが、golの秘密鍵を使用したい場合は、rootにアクセスできるので可能です。すべて。したがって、gol
秘密鍵を使用してsshをrootとして呼び出すには、秘密鍵がどこにあるかsshに通知するだけです。あなたのシステムはわかりませんが、おそらくここにいるでしょう。
/home/gol/.ssh/id_rsa
使用する秘密鍵をsshに通知できます。
ssh -i /home/gol/.ssh/id_rsa gol@remotehost '/home/scripts/script1.sh'
あるいは、正しく引用して元々試した方法を使用することもできます。
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
答え2
引用符を追加して動作させました。
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
更新していただきありがとうございます。フィリップ!
私は引用符を追加してこれを達成したので、Philipの解決策をまだ試していません。