SSH key pair क्या है?

एक SSH key pair दो क्रिप्टोग्राफिक कुंजियों का एक सेट है जिसका उपयोग किसी उपयोगकर्ता को पासवर्ड के बिना एक दूरस्थ सर्वर के लिए प्रमाणित करने के लिए किया जाता है। यह जोड़ी एक निजी कुंजी से मिलकर बनी होती है, जिसे उपयोगकर्ता की मशीन पर गुप्त रखा जाता है, और एक सार्वजनिक कुंजी, जिसे दूरस्थ सर्वर पर रखा जाता है। कनेक्ट करते समय, सर्वर क्लाइंट को निजी कुंजी के स्वामित्व को साबित करने के लिए चुनौती देता है — निजी कुंजी को कभी भी प्रेषित किए बिना। यह असममित दृष्टिकोण पासवर्ड-आधारित प्रमाणीकरण की तुलना में काफी अधिक सुरक्षित है क्योंकि कोई साझा गुप्त नहीं है जिसे इंटरसेप्ट किया जा सकता है या ब्रूट-फोर्स किया जा सकता है।

SSH key pairs को public-key क्रिप्टोग्राफी एल्गोरिदम का उपयोग करके उत्पन्न किया जाता है। सबसे व्यापक रूप से उपयोग किए जाने वाले Ed25519 हैं, एक आधुनिक elliptic-curve एल्गोरिदम जो अपने छोटे key size और उच्च सुरक्षा के लिए जाना जाता है, और RSA, एक समय-परीक्षित एल्गोरिदम जो बड़े पूर्णांकों को फैक्टर करने की कठिनाई पर निर्भर करता है। Ed25519 को नई कुंजियों के लिए अनुशंसित किया जाता है क्योंकि इसका superior performance और side-channel attacks के प्रति प्रतिरोध है।

Tool विवरण

SSH Key Pair Generator Web Crypto API का उपयोग करके सीधे आपके ब्राउज़र में क्रिप्टोग्राफिक रूप से सुरक्षित Ed25519 या RSA SSH key pairs बनाता है। कोई डेटा सर्वर को नहीं भेजा जाता है — सभी key material आपके डिवाइस पर स्थानीय रूप से उत्पन्न होता है। आप वैकल्पिक रूप से एक comment (आमतौर पर user@hostname) जोड़ सकते हैं ताकि बाद में कुंजी की पहचान करने में मदद मिले। उत्पन्न सार्वजनिक और निजी कुंजियों को clipboard में कॉपी किया जा सकता है या फाइलों के रूप में डाउनलोड किया जा सकता है, ssh-copy-id या किसी भी SSH client के साथ उपयोग के लिए तैयार।

उदाहरण

Ed25519 सार्वजनिक कुंजी

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@hostname

RSA सार्वजनिक कुंजी (4096-bit)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2... user@hostname

निजी कुंजी (OpenSSH format)

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAAB...
-----END OPENSSH PRIVATE KEY-----

विशेषताएं

  • Ed25519 और RSA समर्थन: एक आधुनिक elliptic-curve एल्गोरिदम या classic RSA एल्गोरिदम के बीच चुनें
  • RSA key size विकल्प: सुरक्षा और performance को संतुलित करने के लिए 2048, 3072, या 4096-bit RSA कुंजियों का चयन करें
  • वैकल्पिक comment field: कुंजी की पहचान करने में मदद के लिए user@hostname शैली का comment संलग्न करें
  • Client-side generation: कुंजियां पूरी तरह से आपके ब्राउज़र में Web Crypto API का उपयोग करके उत्पन्न होती हैं — कुछ भी प्रेषित या संग्रहीत नहीं होता है
  • One-click download: सार्वजनिक और निजी key फाइलों को सीधे सही फाइल नामों के साथ सहेजें (id_ed25519, id_ed25519.pub, id_rsa, id_rsa.pub)

उपयोग के मामले

  • Server access setup: एक बार एक key pair उत्पन्न करें और सार्वजनिक कुंजी को ~/.ssh/authorized_keys के माध्यम से किसी भी संख्या में दूरस्थ Linux/Unix सर्वर पर तैनात करें ताकि password-free SSH login सक्षम हो सके
  • Git hosting authentication: GitHub, GitLab, या Bitbucket में सार्वजनिक कुंजी जोड़ें ताकि git push और git pull operations को प्रमाणित करें बिना हर बार credentials दर्ज किए
  • CI/CD pipelines: स्वचालित scripts या build agents के लिए एक dedicated deployment key pair बनाएं जिन्हें सर्वर या private repositories के लिए SSH access की आवश्यकता है

यह कैसे काम करता है

Key generation ब्राउज़र के built-in crypto.subtle API (Web Crypto) का उपयोग करता है। Ed25519 के लिए, raw 32-byte निजी scalar और 32-byte सार्वजनिक कुंजी को OpenSSH wire format (openssh-key-v1) में पैक किया जाता है। RSA के लिए, कुंजी को PKCS#8 DER format में निर्यात किया जाता है और एक standard PEM envelope में लपेटा जाता है। सार्वजनिक key blob को SSH wire format में encoded किया जाता है (length-prefixed एल्गोरिदम नाम के बाद key material) और Base64-encoded किया जाता है, जो OpenSSH के authorized_keys फाइल द्वारा अपेक्षित format से मेल खाता है।

सुझाव

  • डाउनलोड करने के बाद, निजी key फाइल पर सही permissions सेट करें: chmod 600 ~/.ssh/id_ed25519। SSH एक निजी कुंजी का उपयोग करने से इनकार करेगा जो अन्य उपयोगकर्ताओं द्वारा पठनीय है।
  • Ed25519 का उपयोग करें जब तक कि आपको पुरानी systems के साथ compatibility की आवश्यकता न हो जो इसे समर्थन नहीं करते। यह छोटी कुंजियां बनाता है और RSA की तुलना में तेज़ है।
  • Comment field कुंजी की क्रिप्टोग्राफिक शक्ति को प्रभावित नहीं करता है — यह विशुद्ध रूप से मानव पहचान के लिए है और बाद में ssh-keygen -c के साथ बदला जा सकता है।
  • Legacy servers के साथ maximum RSA compatibility के लिए, 4096-bit कुंजियां का उपयोग करें। आधुनिक सर्वर के लिए, Ed25519 को RSA key size की परवाह किए बिना पसंद किया जाता है।