.TH sshpk-conv 1 “Jan 2016” sshpk “sshpk Commands” .SH NAME .PP sshpk-conv - convert between key formats .SH SYNOPSYS .PP fBfCsshpk-convfR -t FORMAT [FILENAME] [OPTIONS…] .PP fBfCsshpk-convfR -i [FILENAME] [OPTIONS…] .SH DESCRIPTION .PP Reads in a public or private key and converts it between different formats, particularly formats used in the SSH protocol and the well-known PEM PKCS#1/7 formats. .PP In the second form, with the fBfC-ifR option given, identifies a key and prints to stderr information about its nature, size and fingerprint. .SH EXAMPLES .PP Assume the following SSH-format public key in fBfCid_ecdsa.pubfR: .PP .RS .nf ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTI…9M/4c4= user@host .fi .RE .PP Identify it with fBfC-ifR: .PP .RS .nf $ sshpk-conv -i id_ecdsa.pub id_ecdsa: a 256 bit ECDSA public key ECDSA curve: nistp256 Comment: user@host Fingerprint:

SHA256:vCNX7eUkdvqqW0m4PoxQAZRv+CM4P4fS8+CbliAvS4k
81:ad:d5:57:e5:6f:7d:a2:93:79:56:af:d7:c0:38:51

.fi .RE .PP Convert it to fBfCpkcs8fR format, for use with e.g. OpenSSL: .PP .RS .nf $ sshpk-conv -t pkcs8 id_ecdsa -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAsA4R6N6AS3gzaPBeLjG2ObSgUsR zOt+kWJoijLnw3ZMYUKmAx+lD0I5XUxdrPcs1vH5f3cn9TvRvO9L0z/hzg== -----END PUBLIC KEY----- .fi .RE .PP Retrieve the public half of a private key: .PP .RS .nf $ openssl genrsa 2048 | sshpk-conv -t ssh -c foo@bar ssh-rsa AAAAB3NzaC1yc2EAAA…koK7 foo@bar .fi .RE .PP Convert a private key to PKCS#1 (OpenSSL) format from a new-style OpenSSH key format (the fBfCssh-keygen -ofR format): .PP .RS .nf $ ssh-keygen -o -f foobar &… $ sshpk-conv -p -t pkcs1 foobar -----BEGIN RSA PRIVATE KEY----- MIIDpAIBAAKCAQEA6T/GYJndb1TRH3+NL.… -----END RSA PRIVATE KEY----- .fi .RE .SH OPTIONS .TP fBfC-i, --identifyfR Instead of converting the key, output identifying information about it to stderr, including its type, size and fingerprints. .TP fBfC-p, --privatefR Treat the key as a private key instead of a public key (the default). If you supply fBfCsshpk-convfR with a private key and do not give this option, it will extract only the public half of the key from it and work with that. .TP fBfC-f PATH, --file=PATHfR Input file to take the key from instead of stdin. If a filename is supplied as a positional argument, it is equivalent to using this option. .TP fBfC-o PATH, --out=PATHfR Output file name to use instead of stdout. .PP fBfC-T FORMAT, --informat=FORMATfR .TP fBfC-t FORMAT, --outformat=FORMATfR Selects the input and output formats to be used (see FORMATS, below). .TP fBfC-c TEXT, --comment=TEXTfR Sets the key comment for the output file, if supported. .SH FORMATS .PP Currently supported formats: .TP fBfCpem, pkcs1fR The standard PEM format used by older OpenSSH and most TLS libraries such as OpenSSL. The classic fBfCid_rsafR file is usually in this format. It is an ASN.1 encoded structure, base64-encoded and placed between PEM headers. .TP fBfCsshfR The SSH public key text format (the format of an fBfCid_rsa.pubfR file). A single line, containing 3 space separated parts: the key type, key body and optional key comment. .TP fBfCpkcs8fR A newer PEM format, usually used only for public keys by TLS libraries such as OpenSSL. The ASN.1 structure is more generic than that of fBfCpkcs1fR&. .TP fBfCopensshfR The new fBfCssh-keygen -ofR format from OpenSSH. This can be mistaken for a PEM encoding but is actually an OpenSSH internal format. .TP fBfCrfc4253fR The internal binary format of keys when sent over the wire in the SSH protocol. This is also the format that the fBfCssh-agentfR uses in its protocol. .SH SEE ALSO .PP .BR ssh-keygen (1), .BR openssl (1) .SH BUGS .PP Encrypted (password-protected) keys are not supported. .PP Report bugs at Github [la]https://github.com/arekinath/node-sshpk/issues[ra]