Sample code for 30+ languages & platforms
PHP ActiveX

Generate DSA SSH Key

See more SSH Key Examples

Generates a DSA SSH key and saves to various public and private key file formats (OpenSSH and PuTTY).

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

$key = new COM("Chilkat.SshKey");

// numBits should be a minimum of 1024 and
// a multiple of 64.  Typical values are
// 1024 or 2048. 
$numBits = 2048;
$success = $key->GenerateDsaKey($numBits);
if ($success != 1) {
    print 'Invalid numBits passed to DSA key generation method.' . "\n";
    exit;
}

// Note: Generating a public/private key pair is CPU intensive
// and may take a short amount of time (more than few seconds,
// but less than a minute).

// Export the DSA private key to OpenSSH, PuTTY, and XML and save. 
$exportEncrypted = 0;
$exportedKey = $key->toOpenSshPrivateKey($exportEncrypted);
// Chilkat provides a SaveText method for convenience...
$success = $key->SaveText($exportedKey,'privkey_openssh_unencrypted.pem');

// Export with encryption to OpenSSH private key format:
$key->Password = 'secret';
$exportEncrypted = 1;
$exportedKey = $key->toOpenSshPrivateKey($exportEncrypted);
$success = $key->SaveText($exportedKey,'privkey_openssh_encrypted.pem');

// Export the DSA private key to unencrypted PuTTY format:
$exportEncrypted = 0;
$exportedKey = $key->toPuttyPrivateKey($exportEncrypted);
$success = $key->SaveText($exportedKey,'privkey_putty_unencrypted.ppk');

// Export the DSA private key to encrypted PuTTY format:
$key->Password = 'secret';
$exportEncrypted = 1;
$exportedKey = $key->toPuttyPrivateKey($exportEncrypted);
$success = $key->SaveText($exportedKey,'privkey_putty_encrypted.ppk');

// Export private key to XML:
$exportedKey = $key->toXml();
$success = $key->SaveText($exportedKey,'privkey.xml');

// ----------------------------------------------------
// Now for the public key....
// ----------------------------------------------------

// The Secure Shell (SSH) Public Key File Format
// is documented in RFC 4716.
$exportedKey = $key->toRfc4716PublicKey();
$success = $key->SaveText($exportedKey,'pubkey_rfc4716.pub');

// OpenSSH has a separate public-key file format, which 
// is also supported by Chilkat SshKey:
$exportedKey = $key->toOpenSshPublicKey();
$success = $key->SaveText($exportedKey,'pubkey_openSsh.pub');

print 'Finished.' . "\n";

?>