Sample code for 30+ languages & platforms
AutoIt

Convert PuTTY Private Key (ppk) to OpenSSH (pem)

See more SSH Key Examples

Convert a PuTTY format private key file (.ppk) to OpenSSH (.pem).

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

$oKey = ObjCreate("Chilkat.SshKey")

; Load an unencrypted or encrypted PuTTY private key.

; If  your PuTTY private key is encrypted, set the Password
; property before calling FromPuttyPrivateKey.
; If your PuTTY private key is not encrypted, it makes no diffference
; if Password is set or not set.
$oKey.Password = "secret"

; First load the .ppk file into a string:
Local $sKeyStr
$sKeyStr = $oKey.LoadText("putty_private_key.ppk")

; Import into the SSH key object:
$bSuccess = $oKey.FromPuttyPrivateKey($sKeyStr)
If ($bSuccess <> True) Then
    ConsoleWrite($oKey.LastErrorText & @CRLF)
    Exit
EndIf

; Convert to an encrypted or unencrypted OpenSSH key.

; First demonstrate converting to an unencrypted OpenSSH key
Local $sUnencryptedKeyStr
Local $bEncrypt = False
$sUnencryptedKeyStr = $oKey.ToOpenSshPrivateKey($bEncrypt)
$bSuccess = $oKey.SaveText($sUnencryptedKeyStr,"unencrypted_openssh.pem")
If ($bSuccess <> True) Then
    ConsoleWrite($oKey.LastErrorText & @CRLF)
    Exit
EndIf

; Save to an encrypted OpenSSH PEM file:
Local $sEncryptedKeyStr
$bEncrypt = True
$oKey.Password = "myPassword"
$sEncryptedKeyStr = $oKey.ToOpenSshPrivateKey($bEncrypt)
$bSuccess = $oKey.SaveText($sEncryptedKeyStr,"encrypted_openssh.pem")
If ($bSuccess <> True) Then
    ConsoleWrite($oKey.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Done!" & @CRLF)