समस्या: मेरी कुछ 20-30 ssh-agent
पहचान हैं। अधिकांश सर्वर प्रमाणीकरण के साथ मना कर देते हैं Too many failed authentications
, क्योंकि एसएसएच आमतौर पर मुझे लॉग इन करने के लिए 20 विभिन्न कुंजियों की कोशिश नहीं करने देता।
फिलहाल, मैं प्रत्येक होस्ट के लिए पहचान फ़ाइल को मैन्युअल रूप से निर्दिष्ट कर रहा हूं, IdentityFile
और IdentitiesOnly
निर्देश का उपयोग कर रहा हूं , ताकि एसएसएच केवल एक कुंजी फ़ाइल का प्रयास करेगा, जो काम करती है।
दुर्भाग्य से, यह काम करना बंद कर देता है जैसे ही मूल कुंजी अब उपलब्ध नहीं हैं। ssh-add -l
मुझे हर कुंजी फ़ाइल के लिए सही पथ दिखाता है, और वे पथों के साथ मेल खाते हैं .ssh/config
, लेकिन यह काम नहीं करता है। जाहिरा तौर पर, SSH सार्वजनिक कुंजी हस्ताक्षर द्वारा इंडेंटिटी का चयन करता है न कि फ़ाइल नाम से, जिसका अर्थ है कि मूल फाइलें उपलब्ध होनी हैं ताकि SSH सार्वजनिक कुंजी को निकाल सके।
इसके साथ दो मुश्किलें हैं:
- जैसे ही मैं चाबी पकड़ फ्लैश ड्राइव को अनप्लग करता है, यह काम करना बंद कर देता है
- यह दूरस्थ होस्ट पर उपलब्ध महत्वपूर्ण फ़ाइलों के रूप में बेकार को अग्रेषित करने वाले एजेंट को प्रस्तुत नहीं करता है
बेशक, मैं अपनी पहचान फ़ाइलों से सार्वजनिक कुंजी निकाल सकता हूं और उन्हें अपने कंप्यूटर पर संग्रहीत कर सकता हूं, और प्रत्येक दूरस्थ कंप्यूटर पर मैं आमतौर पर लॉग इन करता हूं। यह एक वांछनीय समाधान की तरह नहीं दिखता है, हालांकि।
मुझे फ़ाइल नाम से ssh-agent से एक पहचान का चयन करने के लिए एक संभावना की आवश्यकता है, ताकि मैं दूरस्थ होस्ट I SSH'd पर उपयोग करके .ssh/config
या पास करके आसानी से सही कुंजी का चयन कर -i /path/to/original/key
सकूं। यह बेहतर होगा यदि मैं कुंजियों को "उपनाम" दे सकूं ताकि मुझे पूर्ण पथ निर्दिष्ट न करना पड़े।
authorized_keys
फाइल है, जिसका उपयोग की गई कुंजी के आधार पर, अलग-अलग कमांड को निष्पादित करता है, कभी भी सीधे शेल एक्सेस की अनुमति के बिना।