How to setup SSH Keys on Windows machine (SSH Client) to access Azure Linux VM?

First you need get public key in a format for OpenSSH authorized_keys file.

  • In WinSCP 5.15, you can use Display Public key on SSH > Authentication page of Advanced Site Settings dialog:

    enter image description here

  • Or you can use PuTTYgen - It's a part of PuTTY package, but WinSCP comes with its own copy (use Tools > Run PuTTYgen on WinSCP Login dialog).

    • Start PuTTYgen.

    • Load your private key in .ppk format.

    • Copy the contents of the box labeled "Public key for pasting into OpenSSH authorized_keys files" to the clipboard:

      enter image description here


Once you get the public key in the authorized_keys format, paste it to the "SSH public key" box, when provisioning Azure Linux machine (or when resetting the public key):

enter image description here


The correct answer was provided in comments by @Rohit Chatterjee:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem

Explanation:

The Azure portal asks for a PEM / CER as part of the VM provisioning process (though one can provide a password instead). PuttyGen creates a PEM from a PPK as this answer decribes, but the output is not accepted by the portal. If I figure this out I will post an answer here... – Rohit Chatterjee Jan 29 at 4:18 1 up voted

Ok, I followed the instructions at azure.microsoft.com/en-us/documentation/articles/… and they worked. Basically you run "openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem". The .pem needs to be uploaded via the Azure portal. (I'm not posting this as an answer because I did it on my Mac, and the poster asked for a Windows solution. Googling indicates that OpenSSL distributions for Windows exist, but I haven't tried any.) – Rohit Chatterjee Jan 29 at 4:49

Also, the private key generated in my comment above - myPrivateKey.key - needs to be imported into PuttyGen and converted to a PPK. Putty will not use the .key file. – Rohit Chatterjee Jan 29 at 4:51