Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loKey
LOCAL lcKeyStr
LOCAL lcUnencryptedKeyStr
LOCAL lnBEncrypt
LOCAL lcEncryptedKeyStr

lnSuccess = 0

loKey = CreateObject('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.
loKey.Password = "secret"

* First load the .ppk file into a string:

lcKeyStr = loKey.LoadText("putty_private_key.ppk")

* Import into the SSH key object:
lnSuccess = loKey.FromPuttyPrivateKey(lcKeyStr)
IF (lnSuccess <> 1) THEN
    ? loKey.LastErrorText
    RELEASE loKey
    CANCEL
ENDIF

* Convert to an encrypted or unencrypted OpenSSH key.

* First demonstrate converting to an unencrypted OpenSSH key

lnBEncrypt = 0
lcUnencryptedKeyStr = loKey.ToOpenSshPrivateKey(lnBEncrypt)
lnSuccess = loKey.SaveText(lcUnencryptedKeyStr,"unencrypted_openssh.pem")
IF (lnSuccess <> 1) THEN
    ? loKey.LastErrorText
    RELEASE loKey
    CANCEL
ENDIF

* Save to an encrypted OpenSSH PEM file:

lnBEncrypt = 1
loKey.Password = "myPassword"
lcEncryptedKeyStr = loKey.ToOpenSshPrivateKey(lnBEncrypt)
lnSuccess = loKey.SaveText(lcEncryptedKeyStr,"encrypted_openssh.pem")
IF (lnSuccess <> 1) THEN
    ? loKey.LastErrorText
    RELEASE loKey
    CANCEL
ENDIF

? "Done!"

RELEASE loKey