มีปัญหาแปลก ๆ ฉันได้สร้างสคริปต์ทุบตีเล็ก ๆ ซึ่งเรียกใช้คำสั่งบนโฮสต์ระยะไกลผ่าน ssh (โดยใช้การตรวจสอบกุญแจสาธารณะ)
เมื่อฉันเรียกใช้สคริปต์นี้ด้วยตนเองจากบรรทัดคำสั่งมันทำงานได้ดี แต่เมื่ออยู่ใน /etc/cron.hourly มันล้มเหลวด้วยPermission denied, please try again.ข้อผิดพลาด
- ฉันอย่างชัดเจนตั้งสำคัญในสคริปต์ที่ใช้ssh -i /root/.ssh/id_rsa user@remote "command";
- สคริปต์กำลังทำงานในฐานะรูท (ฉันได้เพิ่มการecho `id` > /tmp/whoami.logตรวจสอบอีกครั้ง); และ
- รหัส ssh ไม่ได้รับการป้องกันด้วยรหัสผ่าน ...
ระบบคือเซิร์ฟเวอร์ Ubuntu 12.04 ฉันไม่สามารถเข้าถึงทางไกลเพื่อแก้ไขปัญหาได้ แต่อย่างที่ฉันบอกว่าใช้ ssh ด้วยตนเองหรือสคริปต์ทุบตีเดียวกันจากบรรทัดคำสั่งทำงาน
มีความคิดว่าทำไมสิ่งนี้ถึงเกิดขึ้นหรือจะแก้ไขได้อย่างไร?
ปรับปรุง
ปรากฎว่าฉันเข้าใจผิดและรหัส ssh ได้รับการป้องกันด้วยรหัสผ่าน (ด้วยการโหลดพวงกุญแจ ssh-agent) ดังนั้นทำไมมันล้มเหลวจากสคริปต์ แต่ไม่เมื่อทำงานจากเซสชันทุบตี การเพิ่ม. ~/.keychain/$HOSTNAME-shสคริปต์ของฉันแก้ไขปัญหาได้ (ด้วย @grawity ที่ชี้ให้ฉันไปในทิศทางที่ถูกต้องและให้คำตอบที่ครอบคลุม)
SSH_AUTH_SOCKเกี่ยวข้องอย่างไร (แม้ว่าฉันยินดีที่จะลองทำอะไร) ฉันกำลังเข้าถึงไฟล์กุญแจโดยตรงและไฟล์คีย์ไม่ได้รับการป้องกันด้วยรหัสผ่าน สำหรับKRB5CCNAMEการค้นหาอย่างรวดเร็วพบว่านี่เป็นสิ่งที่ต้องทำกับ Kerberos อีกครั้ง - ไม่เห็นการเชื่อมต่อกับปัญหานี้ แต่บางทีฉันอาจจะพลาดบางสิ่งบางอย่างที่นี่ ...
                -vตัวเลือกในsshคำสั่งนั้น...
                ssh -iคำสั่งอย่างชัดเจนทั้งสองกรณี ... ฉันจะลองยกเลิกการตั้งค่าตัวแปรเหล่านั้นในสคริปต์และดู คำแนะนำที่ดีในการเพิ่ม-v- ฉันจะเพิ่มด้วย
                
SSH_AUTH_SOCKและKRB5CCNAMEตัวแปรสภาพแวดล้อม