Содержание
Данная статья является дальнейшим развитием статьи
Разблокировка через 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 на стандартный порт.