𝗡𝗼𝘁 𝗮 𝘃𝗮𝗹𝗶𝗱 𝗢𝗣𝗘𝗡𝗦𝗦𝗛 𝗽𝗿𝗶𝘃𝗮𝘁𝗲 𝗸𝗲𝘆 𝗳𝗶𝗹𝗲
Próbujesz zautomatyzować konserwację WordPressa przez SSH. Otrzymujesz ten błąd:
SSHException: not a valid OPENSSH private key file.
Sprawdziłeś swój plik klucza. Wygląda poprawnie. Problem nie leży w Twoim kluczu. Problem leży w bibliotece.
Paramiko zawodzi, gdy napotka klucze spoza formatu OpenSSH. Dostawcy hostingu i narzędzia generują wiele różnych formatów. Paramiko często je odrzuca.
Zbudowaliśmy warstwę kompatybilności, która obsługuje siedem różnych formatów:
- Nowy format OpenSSH
- PKCS#1 RSA
- SEC 1 EC
- PKCS#8 plain
- PKCS#8 encrypted
- Legacy PEM encrypted
- PuTTY .ppk (v2 i v3)
Paramiko obsługuje OpenSSH i PKCS#1. Zawodzi jednak przy plikach PKCS#8 i .ppk. Na przykład Sakura Internet generuje ECDSA z PKCS#8. Paramiko natychmiast to odrzuca.
Nasze rozwiązanie opiera się na podejściu: wykryj, znormalizuj i przekaż.
- Wykrywanie: System analizuje pierwsze bajty i nagłówki PEM, aby zidentyfikować format.
- Normalizacja: Używamy biblioteki
cryptographydo odczytania klucza. Następnie przepisujemy go jako PEM kompatybilny z OpenSSH. - Przekazanie: Paramiko otrzymuje klucz. Dla Paramiko zawsze wygląda on jak standardowy format OpenSSH.
Napisaliśmy własny parser dla plików PuTTY .ppk. Dzięki temu kod pozostaje lekki. Pozwala to uniknąć dodatkowych zależności, które zwiększają rozmiar pliku binarnego.
Naprawiliśmy również komunikaty błędów. Niejasne błędy generują zgłoszenia do wsparcia. Teraz, w przypadku wystąpienia błędu, podajemy trzy informacje:
- Jaki format dotarł.
- Jakie formaty akceptujemy.
- Co należy zrobić w następnej kolejności.
Ograniczenia biblioteki znikają, gdy zbudujesz przed nią warstwę absorbującą. Warstwa ta sprawia, że różne formaty wyglądają dla Twojej aplikacji identycznie.