Tcl
Tcl
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 Tcl Downloads
load ./chilkat.dll
set success 0
set key [new_CkSshKey]
# 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.
CkSshKey_put_Password $key "secret"
# First load the .ppk file into a string:
set keyStr [CkSshKey_loadText $key "putty_private_key.ppk"]
# Import into the SSH key object:
set success [CkSshKey_FromPuttyPrivateKey $key $keyStr]
if {$success != 1} then {
puts [CkSshKey_lastErrorText $key]
delete_CkSshKey $key
exit
}
# Convert to an encrypted or unencrypted OpenSSH key.
# First demonstrate converting to an unencrypted OpenSSH key
set bEncrypt 0
set unencryptedKeyStr [CkSshKey_toOpenSshPrivateKey $key $bEncrypt]
set success [CkSshKey_SaveText $key $unencryptedKeyStr "unencrypted_openssh.pem"]
if {$success != 1} then {
puts [CkSshKey_lastErrorText $key]
delete_CkSshKey $key
exit
}
# Save to an encrypted OpenSSH PEM file:
set bEncrypt 1
CkSshKey_put_Password $key "myPassword"
set encryptedKeyStr [CkSshKey_toOpenSshPrivateKey $key $bEncrypt]
set success [CkSshKey_SaveText $key $encryptedKeyStr "encrypted_openssh.pem"]
if {$success != 1} then {
puts [CkSshKey_lastErrorText $key]
delete_CkSshKey $key
exit
}
puts "Done!"
delete_CkSshKey $key