बहुत अजीब समस्या है। मैंने एक छोटी सी bash स्क्रिप्ट बनाई है जो ssh (पब्लिक की ऑथेंटिकेशन का उपयोग करके) के माध्यम से एक रिमोट होस्ट पर कमांड चलाता है।
जब मैं इस स्क्रिप्ट को कमांड लाइन से मैन्युअल रूप से चलाता हूं तो यह ठीक काम करता है, लेकिन जब /etc/cron.hourly में रखा जाता है तो यह Permission denied, please try again.
त्रुटि के साथ विफल हो जाता है।
- मैं स्पष्ट रूप से स्क्रिप्ट का उपयोग करके कुंजी सेट करता हूं
ssh -i /root/.ssh/id_rsa user@remote "command"
; - स्क्रिप्ट रूट के रूप में चल रही है (मैंने
echo `id` > /tmp/whoami.log
डबल-चेक में एक जोड़ा ); तथा - ssh कुंजी पासवर्ड संरक्षित नहीं है ...
सिस्टम उबंटू 12.04 सर्वर है, मुझे रिमोट साइड पर समस्या निवारण के लिए ज्यादा पहुंच नहीं है, लेकिन जैसा कि मैंने कहा, मैन्युअल रूप से ssh चल रहा है या कमांड-लाइन कार्यों से समान बैश स्क्रिप्ट।
किसी भी विचार यह क्यों हो रहा है या इसे कैसे ठीक किया जाए ??
अपडेट करें
बाहर मैं बदल जाता है गलत था, और ssh कुंजी था पासवर्ड से सुरक्षित (कीचेन लोडिंग के साथ ssh-एजेंट), इसलिए कारण है कि यह एक स्क्रिप्ट से विफल रही है लेकिन नहीं जब बैश सत्र से चल रहा है। . ~/.keychain/$HOSTNAME-sh
मेरी स्क्रिप्ट में जोड़ने से समस्या हल हो गई (@grawity का धन्यवाद जिन्होंने मुझे सही दिशा में बताया और एक व्यापक उत्तर प्रदान किया)।
SSH_AUTH_SOCK
संबंधित कैसे है (हालांकि मैं कुछ भी करने की कोशिश करके खुश हूं)। मैं सीधे कुंजी फ़ाइल तक पहुँच रहा हूँ, और कुंजी फ़ाइल पासवर्ड से सुरक्षित नहीं है। के रूप में KRB5CCNAME
एक त्वरित खोज के लिए यह Kerberos के साथ कुछ करने के लिए दिखाया गया है। फिर से - इस समस्या का कनेक्शन नहीं देखें, लेकिन शायद मैं यहाँ कुछ याद कर रहा हूँ ...
-v
उस ssh
कमांड में एक विकल्प
ssh -i
से दोनों मामलों में कमांड का उपयोग करके कुंजी का उपयोग करता हूं ... मैं स्क्रिप्ट में उन चर को परेशान करने की कोशिश करता हूं और देखता हूं। जोड़ने के लिए अच्छा सुझाव -v
- मैं इसे भी जोड़ दूंगा।
SSH_AUTH_SOCK
औरKRB5CCNAME
पर्यावरण चर के बाद फिर से परीक्षण करें ।