リモートホストでsshを使用し、rootとして実行されているローカルホストでユーザーを切り替えます。

リモートホストでsshを使用し、rootとして実行されているローカルホストでユーザーを切り替えます。

ルートとして実行されるスクリプトがあります。 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の解決策をまだ試していません。

関連情報