非常に奇妙な問題がある。(公開鍵認証を使用して)sshを介してリモートホストでコマンドを実行する小さなbashスクリプトを作成しました。
このスクリプトをコマンドラインから手動で実行すると正常に動作しますが、/ etc / cron.hourlyに配置するとPermission denied, please try again.
エラーで失敗します。
- を使用して、スクリプトでキーを明示的に設定しました
ssh -i /root/.ssh/id_rsa user@remote "command"
。 - スクリプトはrootとして実行されています(私
echo `id` > /tmp/whoami.log
はダブルチェックに追加しました); そして - sshキーはパスワードで保護されていません...
システムはUbuntu 12.04サーバーです。リモート側でトラブルシューティングを行うためのアクセス権はあまりありませんが、前述のように、sshを手動で実行するか、コマンドラインから同じbashスクリプトを実行できます。
なぜこれが起こっているのか、それをどのように修正するのか?
更新
私が間違っていたことがわかり、sshキーがパスワードで保護されていた(キーチェーンがssh-agentをロードしている)ため、スクリプトから失敗したのに、bashセッションから実行したときに失敗しなかったのです。. ~/.keychain/$HOSTNAME-sh
スクリプトに追加することで問題が解決しました(正しい方向に私を指して包括的な回答を提供してくれた@grawityに感謝します)。
SSH_AUTH_SOCK
に関連しているのかわかりません(私は何でも試して満足しています)。キーファイルに直接アクセスしていますが、キーファイルはパスワードで保護されていません。KRB5CCNAME
クイック検索これはケルベロスとは何かである示しました。繰り返しますが、この問題への関連性はわかりませんが、ここに何か不足しているかもしれません...
-v
そのssh
コマンドにオプションを追加するとさらに良いでしょう...
ssh -i
どちらの場合でも、key using コマンドを明示的に使用しています...スクリプトでこれらの変数の設定を解除してみてください。追加する良い提案-v
-私も追加します。
SSH_AUTH_SOCK
とKRB5CCNAME
環境変数を設定解除した後、もう一度テストします。