以下のコマンドは私のローカルホストで正しく実行され、希望の出力を提供します。下記をご覧ください
$ 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
スクリプトから。これで問題が解決しました。