𝗡𝗼𝘁 𝗮 𝘃𝗮𝗹𝗶𝗱 𝗢𝗣𝗘𝗡𝗦𝗦𝗛 𝗽𝗿𝗶𝘃𝗮𝘁𝗲 𝗸𝗲𝘆 𝗳𝗶𝗹𝗲

Anda mencoba mengotomatiskan pemeliharaan WordPress melalui SSH. Anda mendapatkan error ini: SSHException: not a valid OPENSSH private key file.

Anda sudah memeriksa file kunci Anda. Kelihatannya sudah benar. Masalahnya bukan pada kunci Anda. Masalahnya ada pada library tersebut.

Paramiko gagal saat menemui kunci di luar format OpenSSH. Penyedia hosting dan berbagai alat menghasilkan banyak format yang berbeda. Paramiko sering kali menolaknya.

Kami membangun lapisan kompatibilitas untuk menangani tujuh format berbeda:

  • format baru OpenSSH
  • PKCS#1 RSA
  • SEC 1 EC
  • PKCS#8 plain
  • PKCS#8 encrypted
  • Legacy PEM encrypted
  • PuTTY .ppk (v2 dan v3)

Paramiko menangani OpenSSH dan PKCS#1. Ia gagal pada file PKCS#8 dan .ppk. Sebagai contoh, Sakura Internet menghasilkan ECDSA dengan PKCS#8. Paramiko langsung menolaknya.

Solusi kami menggunakan pendekatan deteksi, normalisasi, dan penyerahan (hand-off).

  1. Deteksi: Sistem memeriksa byte pertama dan header PEM untuk menemukan formatnya.
  2. Normalisasi: Kami menggunakan library cryptography untuk membaca kunci tersebut. Kemudian, kami menulis ulang kunci tersebut sebagai PEM yang kompatibel dengan OpenSSH.
  3. Penyerahan: Paramiko menerima kunci tersebut. Bagi Paramiko, kunci tersebut selalu terlihat seperti format standar OpenSSH.

Kami menulis parser khusus untuk file PuTTY .ppk. Hal ini menjaga kode tetap ringan dan menghindari dependensi tambahan yang dapat memperbesar ukuran biner.

Kami juga memperbaiki pesan error. Error yang tidak jelas menyebabkan banyaknya tiket dukungan. Sekarang kami menyediakan tiga jenis data saat terjadi kegagalan:

  • Format apa yang diterima.
  • Format apa saja yang kami terima.
  • Apa yang harus Anda lakukan selanjutnya.

Batasan sebuah library akan hilang ketika Anda membangun lapisan penyerap di depannya. Lapisan ini membuat format yang berbeda-beda terlihat identik bagi aplikasi Anda.

Sumber: https://dev.to/susumun/not-a-valid-openssh-private-key-file-building-a-compat-layer-for-seven-ssh-private-key-formats-fl8