
以下のコマンドはローカルホストから正常に動作し、目的の出力が得られます。以下を参照してください。
$ 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
スクリプト内。これで問題は解決しました。