ಮಾನ್ಯವಲ್ಲದ OPENSSH ಖಾಸಗಿ ಕೀ ಫೈಲ್
ನೀವು SSH ಮೂಲಕ WordPress ನಿರ್ವಹಣೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೀರಿ. ಆಗ ನಿಮಗೆ ಈ ದೋಷ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ:
SSHException: not a valid OPENSSH private key file.
ನೀವು ನಿಮ್ಮ ಕೀ ಫೈಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿದ್ದೀರಿ. ಅದು ಸರಿಯಾಗಿ ಕಾಣಿಸುತ್ತದೆ. ಸಮಸ್ಯೆ ನಿಮ್ಮ ಕೀಯಲ್ಲ. ಸಮಸ್ಯೆ ಲೈಬ್ರರಿಯಲ್ಲಿ (library) ಇದೆ.
OpenSSH ಫಾರ್ಮ್ಯಾಟ್ಗಿಂತ ಭಿನ್ನವಾಗಿರುವ ಕೀಗಳನ್ನು ಕಂಡಾಗ Paramiko ವಿಫಲವಾಗುತ್ತದೆ. ಹೋಸ್ಟಿಂಗ್ ಪ್ರೊವೈಡರ್ಗಳು ಮತ್ತು ಪರಿಕರಗಳು (tools) ಅನೇಕ ವಿಭಿನ್ನ ಫಾರ್ಮ್ಯಾಟ್ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ. 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' ಅನ್ನು ನಿರ್ಮಿಸಿದಾಗ ಅದರ ಮಿತಿಗಳು ಮಾಯವಾಗುತ್ತವೆ. ಈ ಲೇಯರ್ ವಿಭಿನ್ನ ಫಾರ್ಮ್ಯಾಟ್ಗಳನ್ನು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಒಂದೇ ರೀತಿಯಂತೆ ಕಾಣುವಂತೆ ಮಾಡುತ್ತದೆ.