El escenario aquí es que recibí una clave privada generada por AWS (una clave ED25519) y la probé usando el ssh integrado de Windows 10/1809 (OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5), y funciona bien.
Probé la misma clave en la misma PC pero desde WSL Ubuntu 18.04.3 (OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 de diciembre de 2017) y se queja de que la clave tiene un formato no válido.
Al invocar ssh -v se muestra:
....snip a bit here....
debug1: Authenticating to xxxxxxxx.demo.com:22 as 'jgauthier'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha1 compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha1 compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:fCykR67cJynMNYYYv9jEO5PhYQgcaU0WRy/xmSsTxYQ
debug1: Host 'xxxxxxxx.demo.com' is known and matches the ECDSA host key.
debug1: Found key in /home/jgauthier/.ssh/known_hosts:1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
------------------------------------------------------------------------------
NOTICE
This IT system is provided for business use in accordance with approved
Policies and Procedures. By logging in, users acknowledge their understanding
that authorized administrators monitors and stores all activity generated on
this system as appropriate for business and security operations and may
disclose such activity or information as permitted by law.
------------------------------------------------------------------------------
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: jgauthier_key.pem
Load key "jgauthier_key.pem": invalid format
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).
Aquí están las últimas líneas relevantes de la que funciona:
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: jgauthier_key.pem
debug1: Authentication succeeded (publickey).
Authenticated to xxxxxxx.demo.com ([nn.nn.nn.nn]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: console supports the ansi parsing
debug1: client_input_global_request: rtype [email protected] want_reply 0
Last login: Fri Oct 18 21:30:10 2019 from mm.mm.mm.mm
Last login: Fri Oct 18 21:30:10 2019 from mm.mm.mm.mm
[jgauthier@xxxxxxx ~]$
¿Algunas ideas? No lo he probado todavía desde una máquina virtual VirtualBox que ejecute Ubuntu 18.04.3 en la misma PC, ni desde otro sistema Linux...
El host al que me estoy conectando es CentOS 7.6. Son los informes del servidor.
Remote protocol version 2.0, remote software version OpenSSH_7.4
cuando me conecto, si eso importa.
Pensé que podría ser CR/LF vs LF, pero en WSL Linux edité manualmente el archivo .pem para eliminar cualquier posible CR/LF y me aseguré de dejar un solo LF después de la última línea del archivo, pero no. . Incluso hice una diferencia entre la copia en mi directorio .ssh de Windows y la copia en mi WSL ~/.ssh, y son idénticas.
¿Se trata de las dos versiones de ssh: LibreSSL 2.6.5 vs OpenSSL 1.0.2n?