O cenário aqui é que recebi uma chave privada gerada pela AWS - uma chave ED25519 - e tentei usando o ssh integrado do Windows 10/1809 (OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5) e funciona bem.
Tentei a mesma chave no mesmo PC, mas no WSL Ubuntu 18.04.3 (OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 de dezembro de 2017), e ele reclama que a chave tem um formato inválido.
Invocar ssh -v mostra:
....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).
Aqui estão as últimas linhas relevantes daquela 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 ~]$
Alguma ideia? Ainda não experimentei em uma VM VirtualBox rodando Ubuntu 18.04.3 no mesmo PC, nem em outro sistema Linux...
O host ao qual estou me conectando é o CentOS 7.6. São relatórios do servidor
Remote protocol version 2.0, remote software version OpenSSH_7.4
quando eu me conectar, se isso importa.
Achei que poderia ser CR/LF vs LF, mas no WSL Linux editei manualmente o arquivo .pem para remover quaisquer CR/LFs possíveis e deixei um único LF após a última linha do arquivo - mas não vá . Eu até fiz uma comparação entre a cópia no meu diretório .ssh do Windows e a cópia no meu WSL ~/.ssh, e elas são idênticas.
É algo sobre as duas versões do ssh - LibreSSL 2.6.5 vs OpenSSL 1.0.2n?