コマンドは機能しますが、スクリプトで実行すると権限拒否エラーが発生します。

コマンドは機能しますが、スクリプトで実行すると権限拒否エラーが発生します。

以下のコマンドは私のローカルホストで正しく実行され、希望の出力を提供します。下記をご覧ください

$ ssh -o ConnectTimeout=7  -o BatchMode=yes [email protected] "echo WORKS;exit"
Output:
WORKS

test.sh次に、このコマンドを十分な実行権限を持つスクリプトファイルに入れます。

$ cat test.sh
segment=$(ssh -o ConnectTimeout=7  -o BatchMode=yes [email protected] "echo WORKS;exit")
echo "SEGMENT $segment"

希望の結果は出ません。実際、次のエラーが発生します。

$ ./test.sh
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
SEGMENT

楽しみにしています。

SEGMENT WORKS

今は許可拒否エラーは消えていますが、

問題が何であるかを提案できますか?

答え1

問題はエイリアスを使用したことです。

alias ssh=ssh -i /app/private_key

ユーザープロファイルに保存されます。ただし、この設定はシェルスクリプトには適用されません(参照:ここたとえば、明示的に呼び出す必要があります。

ssh -i app/private_key

スクリプトから。これで問題が解決しました。

関連情報