Данная статья является дальнейшим развитием статьи
Разблокировка через SSH полностью зашифрованного ubuntu-server 12.04







Действия выполняемые на удаленном сервере

Установка и настройка ssh-сервера dropbear

Устанавливаем сервер SSH dropbear:

~# apt install dropbear

Меняем номер порта на котором будет слушать dropbear, чтобы разойтись с сервером openssh при проверке ключа машины в файле known_hosts. Для этого редактируем файл /etc/dropbear-initramfs/config - добавляем строку:

DROPBEAR_OPTIONS="-p 4748 -s -j -k -I 60"

где

  • -s Запрет логина по паролю
  • -j Запрет проброса локального порта
  • -k Запрет проброса удаленного порта
  • -p [address:]port Прослушиваемый порт tcp (и, возможно, адрес), можно указать до 10 (порт по умолчанию - 22, если не указано) | Listen on specified tcp port (and optionally address), up to 10 can be specified (default port is 22 if none specified) FIXME
  • -I Таймаут до разрыва соединения если не передается никаких данных, в секундах

Настройка сетевого интерфейса в initrd (можно пропустить, если настроили для этого сервер dhcp)

В файле /etc/default/grub описываем параметры сетевого интерфейса:

GRUB_CMDLINE_LINUX="ip=192.168.11.95::192.168.11.191:255.255.255.0::enp2s0:none"

в сооветствии с nfsroot.txt https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>: <dns0-ip>:<dns1-ip>:<ntp0-ip>

Обновляем grub:

update-grub

Создание ключей для initrd

Конвертируем ключ dropbear в формат openssh, тем самым получаем приватный ключ для initramfs:

~# /usr/lib/dropbear/dropbearconvert dropbear openssh /etc/dropbear-initramfs/dropbear_rsa_host_key /etc/dropbear-initramfs/id_rsa

Получаем публичный ключ:

~# dropbearkey -y -f /etc/dropbear-initramfs/dropbear_rsa_host_key | grep rsa > /etc/dropbear-initramfs/id_rsa.pub
Действия выполняемые на клиенте

Копируем ключи используя scp

Копируем свой публичный ключ в файл authorized.keys на сервер (предварительно для root должен быть настроен доступ по ключам):

~$ scp -P <port> /home/<username>/.ssh/id_rsa.pub root@<server-ip>:/etc/dropbear-initramfs/authorized.keys

Копируем, созданный на предыдущем этапе, приватный ключ сервера клиенту:

~$ scp -P <port> root@<server-ip>:/etc/dropbear-initramfs/id_rsa /home/<username>/.ssh/id_rsa_server
Действия выполняемые на удаленном сервере

Обновление initrd и перезагрузка

Обновляем initramfs:

~# update-initramfs -u

Перегружаем сервер и подключаемся к нему c КЛИЕНТА:

Действия выполняемые на клиенте

Удаленная разблокировка сервера

~$ ssh -i "/home/<username>/.ssh/id_rsa_server" root@<server-ip> -p 4748

В открывшемся сеансе на сервере выполняем команду:

~# cryptroot-unlock

Разблокируем известным вам паролем, после чего имеем возможность подключиться к серверу openssh на стандартный порт.

Ссылки