Sample code for 30+ languages & platforms
Java

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 Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.SshKey;

public class ChilkatExample {

    public static void main(String[] args) {
        SshKey key = new SshKey();

        // numBits should be a minimum of 1024 and
        // a multiple of 64.  Typical values are
        // 1024 or 2048.
        int numBits = 2048;
        try {
            key.generateDsaKey(numBits);
        } catch (ChilkatException e) {
            System.out.println("Invalid numBits passed to DSA key generation method.");
            return;
        }

        // 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.
        boolean exportEncrypted = false;
        String exportedKey = key.toOpenSshPrivateKey(exportEncrypted);
        // Chilkat provides a SaveText method for convenience...
        key.saveText(exportedKey, "privkey_openssh_unencrypted.pem");

        // Export with encryption to OpenSSH private key format:
        key.setPassword("secret");
        exportEncrypted = true;
        exportedKey = key.toOpenSshPrivateKey(exportEncrypted);
        key.saveText(exportedKey, "privkey_openssh_encrypted.pem");

        // Export the DSA private key to unencrypted PuTTY format:
        exportEncrypted = false;
        exportedKey = key.toPuttyPrivateKey(exportEncrypted);
        key.saveText(exportedKey, "privkey_putty_unencrypted.ppk");

        // Export the DSA private key to encrypted PuTTY format:
        key.setPassword("secret");
        exportEncrypted = true;
        exportedKey = key.toPuttyPrivateKey(exportEncrypted);
        key.saveText(exportedKey, "privkey_putty_encrypted.ppk");

        // Export private key to XML:
        exportedKey = key.toXml();
        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();
        key.saveText(exportedKey, "pubkey_rfc4716.pub");

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

        System.out.println("Finished.");
    }
}