openssh – Why is ssh-keygen generating two types of keys between Ubuntu 18 and Ubuntu 20?

I have two virtual machines.

  • VM1 is on ubuntu 18.04
  • VM2 is on ubuntu 20.04.1

When I ssh-keygen on VM1 it gives me an RSA private key.

When I do the same thing on VM2, its giving me an OpenSSH private key.

Why are two Ubuntu VMs producing different keys? I’m trying to automate key generation and convert it to a usable PEM key for Ansible. Which worked fine for VM1 but because VM2 is generating OpenSSH keys instead of RSA private keys, the OpenSSL command is failing to convert the key.

root@Bento:~/.ssh# openssl rsa -in privkey -outform pem > privkey.pem
unable to load Private Key
139680893203776:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY

Ansible task

- name: Generate an OpenSSH keypair
  community.crypto.openssh_keypair:
    path: "/{{ ansible_env.HOME }}/.ssh/privkey"
    type: rsa
    comment: " KEY {{ ansible_date_time.date }}"

- name: Convert to pem
  become: true
  shell: openssl rsa -in {{ ansible_env.HOME }}/.ssh/privkey -outform pem > {{ ansible_env.HOME }}/.ssh/privkey.pem
    

manual ssh-keygen

root@Bento:~/.ssh# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): privkey
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in privkey
Your public key has been saved in privkey.pub
The key fingerprint is:
SHA256:12L0AzhQV1DbnTI+BBK98pVr3uIRoMpEDlOdAC+EzeY root@Bento
The key's randomart image is:
+---(RSA 3072)----+
|    +oo++o*=o    |
|   ..+o. =...o ..|
|    o+ oo o.o+o..|
|     E*  +.=+oo  |
|       oS.* =+.  |
|      o .o o +o  |
|       o    o..  |
|             o.. |
|            ...  |
+----(SHA256)-----+
root@Bento:~/.ssh# ssh-keygen -e -m pem -f privkey
-----BEGIN RSA PUBLIC KEY-----
MIIBigKCAYEA26DDdYXIReHsRqWHh19VMGuKCvR+y4G6XVpxAqVAD+NeNLtMVAZu
G76mYWgmVIEGuQgB4O/E0V9Tpg8NNU7NQLG81BL1RZayZSo1rpr6ylFfltRRNe9k
nG0uJE9Ipikm8yeooTWp6hd/7tSMj4NHzHVQFcY88zLnaGu6f627ZwTpmaW7vvF+
PzYJZBqlrsXgUTVPHqjfrkqQY+M/eqBvt/hLa3u8t+tkIAkLO4W8bwb3fTo324GK
0O8juU5jMggEyeGaXko2CgJFAjZZipQa45S6O53+xRjtMI6lzTPvRuXWiPnYNwHI
KvTf2WsAQ2C/z40Phiumtda8FinX5y+sC9U3AZqfBg5XFSEcc+/5wWRHyRru2ARt
sL32wniRUQ6m+Ky/QIbSfE2j6XGjU7uwM/kK7v9GSCGQeJwE7KFO01xgpb6xNS+X
xG0S3iEwnUltAyCOSm3te9s2rzNz9W151s27PxlrwT9Lv5Gv8sma0SHO/s6jZjZ7
ZqWUncdpl5uNAgMBAAE=
-----END RSA PUBLIC KEY-----
root@Bento:~/.ssh#

ssh-keygen -e -m pem -f privkey is saying its a public key. But when I nano privkey it’s saying its a private key.

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----