リモートサーバーにSSH接続した後、別のユーザーにSudoを実行したかったので、次のことを試しました。
cat remote-test.sh
ssh -t -t [email protected] 'bash -s' << EOF
/tmp/test.sh
EOF
development-server.netからremote-test.shを実行するとき、abcuserとしてtest-server.netにsshし、次にxyzuserとしてSudoにsshしたかった。
cat /tmp/test.sh
echo "password" | Sudo -S su - xyzuser
cd /tmp/some/directory
スクリプトでSudosuを実行しているときに、パスワードを渡す方法を誰かにアドバイスしてもらえますか?.
password-less ssh to localhost as user xyzuser
for abcuser
を設定して、目的を達成します。 abcuser
の公開鍵をxyzuser
のauthorized_keyとして追加する必要があります。
次に、abcuser
としてログインすると、次のことができます。
ssh xyzuser@localhost do_something_as_xyzuser
xyzuser
へのsshアクセスをブロックした場合は、ループバックを介してのみ許可してください。 Linuxを使用している場合は、その方法について/etc/security/access.conf
または同等のものを参照してください。
su
を使用してドロップし、正しい権限でSudoを構成します。それには編集が含まれます/etc/sudoers
そしてユーザーがパスワードを提供せずにコマンドを実行できるようにするためのエントリを追加します。
あなたはそれを少し高度にすることができます
User_Alias SCRIPT_USER johndoe
Cmnd_Alias SCRIPT_PATH /usr/local/bin/myscript.sh
SCRIPT_USER ALL = NOPASSWD: SCRIPT_PATH
または、1行で同じものを取得します。
johndoe ALL = NOPASSWD: /usr/local/bin/myscript.sh
私はhighly@ pkhamre(適切に構成されたsudoersファイル)によって提案されたソリューションを使用することをお勧めします。これは最良のオプションであり、管理者に最大限の制御を提供します。
それが達成できない場合は、@ skjaidev(sshauthorized_keys)のソリューションを使用することをお勧めします。これには、管理者権限は必要ありません。両方のアカウントへのアクセスのみが必要なので、より多くの場合に適している可能性があります。
しかし、何らかの理由でこれらのソリューションのどちらもが機能しない場合...
次に、これに expect を使用します。おそらくすでにあなたのマシンにあります。これは、あらゆる種類のインタラクティブなコマンドライン自動化の標準ツールです。