માન્ય OPENSSH પ્રાઇવેટ કી ફાઇલ નથી
તમે SSH દ્વારા WordPress મેન્ટેનન્સને ઓટોમેટ કરવાનો પ્રયાસ કરો છો. તમને આ ભૂલ મળે છે:
SSHException: not a valid OPENSSH private key file.
તમે તમારી કી ફાઇલ તપાસી છે. તે સાચી લાગે છે. સમસ્યા તમારી કીમાં નથી. સમસ્યા લાઇબ્રેરીમાં છે.
જ્યારે Paramiko ને OpenSSH ફોર્મેટ સિવાયની કી મળે છે, ત્યારે તે નિષ્ફળ જાય છે. હોસ્ટિંગ પ્રોવાઇડર્સ અને ટૂલ્સ ઘણા અલગ-અલગ ફોર્મેટ બનાવે છે. Paramiko ઘણીવાર તેને નકારી દે છે.
અમે સાત અલગ-અલગ ફોર્મેટને હેન્ડલ કરવા માટે એક કમ્પેટીબિલિટી લેયર (compatibility layer) બનાવ્યું છે:
- OpenSSH નવું ફોર્મેટ
- PKCS#1 RSA
- SEC 1 EC
- PKCS#8 plain
- PKCS#8 encrypted
- Legacy PEM encrypted
- PuTTY .ppk (v2 અને v3)
Paramiko, OpenSSH અને PKCS#1 ને હેન્ડલ કરે છે. તે PKCS#8 અને .ppk ફાઇલો પર નિષ્ફળ જાય છે. ઉદાહરણ તરીકે, Sakura Internet, PKCS#8 સાથે ECDSA બનાવે છે. Paramiko તેને તરત જ નકારી દે છે.
અમારો ઉકેલ 'detect, normalize, અને hand-off' અભિગમનો ઉપયોગ કરે છે.
- Detect: સિસ્ટમ ફોર્મેટ શોધવા માટે પ્રથમ બાઇટ્સ અને PEM હેડર્સ તપાસે છે.
- Normalize: અમે કી વાંચવા માટે cryptography લાઇબ્રેરીનો ઉપયોગ કરીએ છીએ. ત્યારબાદ અમે તેને OpenSSH-સુસંગત (compatible) PEM તરીકે ફરીથી લખીએ છીએ.
- Hand-off: Paramiko કી મેળવે છે. Paramiko માટે, તે હંમેશા સ્ટાન્ડર્ડ OpenSSH ફોર્મેટ જેવી જ દેખાય છે.
અમે PuTTY .ppk ફાઇલો માટે કસ્ટમ પાર્સર (custom parser) લખ્યું છે. આ કોડને હળવો રાખે છે. તે બાઈનરી સાઈઝ વધારતી વધારાની ડિપેન્ડન્સીઝ (dependencies) ને ટાળે છે.
અમે ભૂલના સંદેશાઓ (error messages) પણ સુધાર્યા છે. અસ્પષ્ટ ભૂલોને કારણે સપોર્ટ ટિકિટો વધે છે. હવે જ્યારે નિષ્ફળતા આવે છે ત્યારે અમે ત્રણ પ્રકારની માહિતી આપીએ છીએ:
- કયું ફોર્મેટ આવ્યું હતું.
- અમે કયા ફોર્મેટ સ્વીકારીએ છીએ.
- તમારે આગળ શું કરવું જોઈએ.
જ્યારે તમે લાઇબ્રેરીની આગળ એક એવું લેયર બનાવો છો જે બધું શોષી લે (absorbing layer), ત્યારે લાઇબ્રેરીની મર્યાદાઓ દૂર થઈ જાય છે. આ લેયર અલગ-અલગ ફોર્મેટને તમારા એપ્લિકેશન માટે સમાન બનાવે છે.