Não é possível desbloquear remotamente ssh servidor ubuntu encriptado 15.04 usando dropbear / initramfs

3

Por isso, estou tentando configurar um novo servidor headless do Ubuntu 15.04 com recursos de criptografia de disco total e desbloqueio remoto. Eu fiz isso com sucesso em um raspberry pi rodando Raspbian-Wheezy, e outro servidor Ubuntu 14.04 sem cabeça.

Para as tentativas bem-sucedidas e para a última tentativa frustrada, tenho seguido as instruções em este guia .

Instalar o Dropbear / busybox:

sudo apt-get install busybox dropbear

Copie as chaves ssh geradas para o cliente:

sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/id_rsa_dropbear
sudo scp ~/id_rsa_dropbear client@client:~/.ssh/id_rsa_dropbear

Como meu cliente é um cliente do Windows executando o cygwin, altere as permissões na nova chave:

chgrp Users ~/.ssh/id_rsa_dropbear
chmod 600 ~/.ssh/id_rsa_dropbear

O Dropbear anexa automaticamente a chave pública ao arquivo authorized_keys na geração de chaves. Criado o script crypt_unlock.sh conforme indicado no link acima, tornado executável:

sudo vi /etc/initramfs-tools/hooks/crypt_unlock.sh
sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh

Atualize o initramfs:

sudo initramfs-update -u

Reinicialize o servidor, tentando SSH root @ serverip solicita uma senha de chave e, em seguida, a senha do usuário root. Não há passphrase para esta chave, eu pensei que dropbear não suporta chaves criptografadas? O que deve acontecer é a chave deve ser reconhecida e eu deveria estar em um prompt busybox, onde eu posso digitar 'desbloquear' e, em seguida, digite a senha de criptografia para desbloquear o disco raiz no servidor.

Eu posso inserir a frase secreta de criptografia localmente (quando o servidor estiver diretamente conectado a um teclado / monitor) e o servidor inicializará corretamente. O que eu não consigo descobrir é por que dropbear não está jogando bem com a chave privada. Eu até tentei recriar manualmente as chaves privadas / públicas usando as instruções no arquivo Leia-me cryptsetup várias vezes. Dropbear está começando com sucesso com o initramfs, ele pode ser visto no prompt de senha local.

Se alguém tiver alguma sugestão, seria muito apreciado. Estou realmente confuso como eu disse, eu fiz isso duas vezes antes com zero problemas. Eu tentei procurar para ver se era possivelmente um problema com 15.04, mas não consegui encontrar nada.

EDITAR:

Saída do ssh -vv root @ serverip:

    $ ssh -vv alphabot_dropbear
OpenSSH_6.7p1, OpenSSL 1.0.1j 15 Oct 2014
debug1: Reading configuration data /home/Pete/.ssh/config
debug1: /home/Pete/.ssh/config line 2: Applying options for alphabot_dropbear
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/Pete/.ssh/config
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.82.125 [192.168.82.125] port 22.
debug1: Connection established.
debug1: read_keyfile_line: /home/Pete/.ssh/id_rsa_dropbear line 3 exceeds size limit
debug1: read_keyfile_line: /home/Pete/.ssh/id_rsa_dropbear line 3 exceeds size limit
debug1: key_load_public: No such file or directory
debug1: identity file /home/Pete/.ssh/id_rsa_dropbear type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Pete/.ssh/id_rsa_dropbear-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7
debug1: Remote protocol version 2.0, remote software version dropbear_2014.65
debug1: no match: dropbear_2014.65
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,[email protected]
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc
debug2: kex_parse_kexinit: aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc
debug2: kex_parse_kexinit: hmac-sha2-256,hmac-sha2-512,hmac-sha1-96,hmac-sha1,hmac-md5
debug2: kex_parse_kexinit: hmac-sha2-256,hmac-sha2-512,hmac-sha1-96,hmac-sha1,hmac-md5
debug2: kex_parse_kexinit: zlib,[email protected],none
debug2: kex_parse_kexinit: zlib,[email protected],none
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: setup hmac-sha2-256
debug1: kex: server->client aes128-ctr hmac-sha2-256 none
debug2: mac_setup: setup hmac-sha2-256
debug1: kex: client->server aes128-ctr hmac-sha2-256 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA ea:e6:df:5a:82:d6:db:20:3e:c9:5b:93:ad:f5:3b:3a
debug1: Host '192.168.82.125' is known and matches the RSA host key.
debug1: Found key in /home/Pete/.ssh/known_hosts.initramfs:1
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/Pete/.ssh/id_rsa_dropbear (0x0), explicit
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/Pete/.ssh/id_rsa_dropbear
debug1: key_load_private_type: incorrect passphrase supplied to decrypt private key
Enter passphrase for key '/home/Pete/.ssh/id_rsa_dropbear':
debug2: no passphrase given, try next key
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
[email protected]'s password:
    
por Pete Buonomo 06.05.2015 / 17:32

2 respostas

3

Eu realmente não tenho certeza qual foi o problema; Eu tentei usar uma idbsa dropbear de trabalho diferente e isso ainda não funcionou. Acabei de reinstalar completamente um novo 15.04 e seguindo todos os passos novamente e consegui desbloquear sem problemas.

    
por Pete Buonomo 17.05.2015 / 23:02
2

Acabei de me deparar com o mesmo problema. O que aconteceu foi que a chave foi armazenada no formato antigo:

cat /etc/ssh/ssh_host_rsa_key
SSH PRIVATE KEY FILE FORMAT 1.1
<encoded private key here>

No entanto, o novo sshd está esperando as novas chaves codificadas na base64.

cat /etc/ssh/ssh_host_rsa_key
-----BEGIN RSA PRIVATE KEY-----
<base64 encoding here>
-----END RSA PRIVATE KEY-----

Provavelmente, existe uma maneira de copiar os números de chave privados e públicos e reformatar em base64. No entanto, a opção mais fácil seria regenerar as chaves usando o mais recente ssh-keygen

    
por sverasch 28.04.2016 / 20:47