Memiliki masalah yang sangat aneh. Saya telah membuat skrip bash kecil yang menjalankan perintah pada host jarak jauh melalui ssh (menggunakan otentikasi kunci publik).
Ketika saya menjalankan skrip ini secara manual dari baris perintah berfungsi dengan baik, tetapi ketika ditempatkan di /etc/cron.hourly gagal dengan Permission denied, please try again.
kesalahan.
- Saya secara eksplisit mengatur kunci dalam skrip menggunakan
ssh -i /root/.ssh/id_rsa user@remote "command"
; - skrip berjalan sebagai root (saya menambahkan
echo `id` > /tmp/whoami.log
untuk memeriksa ulang); dan - kunci ssh tidak dilindungi kata sandi ...
Sistem ini adalah server Ubuntu 12.04, saya tidak memiliki banyak akses di sisi jarak jauh untuk memecahkan masalah, tetapi seperti yang saya katakan, menjalankan ssh secara manual atau skrip bash yang sama dari perintah-perintah berfungsi.
Adakah yang tahu mengapa ini terjadi atau bagaimana cara memperbaikinya ??
memperbarui
bergantian keluar aku salah, dan kunci ssh itu dilindungi password (dengan pembebanan keychain ssh-agent), maka mengapa gagal dari naskah tetapi tidak ketika berjalan dari sesi bash. Menambahkan . ~/.keychain/$HOSTNAME-sh
ke skrip saya menyelesaikan masalah (terima kasih kepada @grawity yang menunjuk saya ke arah yang benar dan memberikan jawaban yang komprehensif).
SSH_AUTH_SOCK
hubungannya (walaupun saya senang mencoba apa pun). Saya mengakses file kunci secara langsung, dan file kunci tidak dilindungi kata sandi. Sedangkan untuk KRB5CCNAME
pencarian cepat menunjukkan ini ada hubungannya dengan Kerberos. Sekali lagi - jangan melihat hubungan dengan masalah ini, tapi mungkin saya kehilangan sesuatu di sini ...
-v
opsi ke ssh
perintah itu ...
ssh -i
perintah dalam kedua kasus ... Saya akan mencoba membuka variabel-variabel dalam skrip dan melihat. Saran bagus untuk ditambahkan -v
- Saya akan menambahkannya juga.
SSH_AUTH_SOCK
danKRB5CCNAME
lingkungan.