Você não gera a chave usada por aes
quando você usa ssh-keygen
. Como aes
é um código simétrico , suas chaves não não vem em pares. Ambas as extremidades da comunicação usam a mesma chave.
A chave gerada pelo ssh-keygen usa criptografia de chave pública para autenticação. Do manual ssh-keygen
:
ssh-keygen generates, manages and converts authentication keys for
ssh(1). ssh-keygen can create RSA keys for use by SSH protocol version 1
and DSA, ECDSA, Ed25519 or RSA keys for use by SSH protocol version 2.
Do manual ssh
:
Public key authentication works as follows: The scheme is based on
public-key cryptography, using cryptosystems where encryption and
decryption are done using separate keys, and it is unfeasible to derive
the decryption key from the encryption key. The idea is that each user
creates a public/private key pair for authentication purposes. The
server knows the public key, and only the user knows the private key.
ssh implements public key authentication protocol automatically, using
one of the DSA, ECDSA, Ed25519 or RSA algorithms.
O problema com a criptografia de chave pública é que ela é bastante lenta. A criptografia de chave simétrica é muito mais rápida e é usada por ssh
para a transferência de dados real. A chave usada para a criptografia simétrica é gerada rapidamente após a conexão ter sido estabelecida (citando o manual sshd
):
For protocol 2, forward security is provided through a Diffie-Hellman key
agreement. This key agreement results in a shared session key. The rest
of the session is encrypted using a symmetric cipher, currently 128-bit
AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES. The
client selects the encryption algorithm to use from those offered by the
server. Additionally, session integrity is provided through a
cryptographic message authentication code (hmac-md5, hmac-sha1, umac-64,
umac-128, hmac-ripemd160, hmac-sha2-256 or hmac-sha2-512).
Se você deseja usar aes256-cbc
, você precisa especificá-lo na linha de comando usando a opção -c, em sua forma mais básica, seria assim:
$ ssh -c aes256-cbc user@host
Você também pode especificar sua seleção preferida de cifras em ssh_config
, usando uma lista separada por vírgula. Mexer com os padrões, no entanto, não é recomendado, pois é melhor deixar isso para os especialistas. Há muitas considerações e anos de experiência na escolha dos padrões pelos desenvolvedores do OpenSSH.