Я пытаюсь разблокировать бездисплейный сервер, выполняющий зашифрованную версию Ubuntu 14.04. Это - чистые 14.04.2 установки со всеми обновлениями на момент написания этих строк.
Я пошел thtrough стандартные интриги с dropbear
и busybox
, т.е.:
# INSTALL
sudo apt-get install dropbear busybox # on server
# ENABLE AND CONFIGURE IP
sudo sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropber
sudo sed -i 's/BUSYBOX=y/BUSYBOX=y\nDROPBEAR=y\n/g' \
/etc/iniramfs/iniramfs.conf
sudo sed -i 's/DEVICE=.+/DEVICE=etho0/g' \
/etc/iniramfs/initramfs.conf
sudo sed -i 's/IP=.+/IP=IP=192.168.0.11:::255.255.255.0::eth1:off' \
/etc/initramfs/initramfs.conf
sudo update-initramfs
# COPY DROPBEAR SSH KEY
# WRONG: sudo cp /etc/dropbear/dropbear_*_host_key /tmp
sudo cp /etc/initramfs-tools/root/.ssh/id_rsa /tmp # BETTER!
sudo chown $USER:$USER /tmp/id_rsa
scp server:/tmp/id_rsa ~/.ssh/id_rsa_dropbear_server # on client
sudo reboot # on server
# CONNECT TO SERVER
ssh -vv -i ~/.ssh/id_rsa_dropbear_server \
-o 'UserKnownHostsFile=~/.ssh/known_hosts.initramfs' \
root@192.168.0.11 # on client
Таким образом, я скопировал автоматически сгенерированный ssh-ключ и реализовал минимальную конфигурацию dropbear. К моему удивлению два три вещи неправильно функционируют:
192.168.0.27
несмотря на мою конфигурацию. Таким образом, я попробовал перечисленный неправильный IP: ssh -vv -i ~/.ssh/dropbear_dss_host_key -o 'UserKnownHostsFile=~/.ssh/known_hosts.initramfs' root@192.168.0.27
. Это соединяется с dropbear, но:/etc/initramfs-tools/root/.ssh/authorized_keys
(протестированный с dss - возможно, также rsa). Вот целая ssh сессия.
Я добавил свой обычный файл с открытым ключом к известным хостам dropbear в сервере /etc/initramfs-tools/root/.ssh/authorized_keys
и попробованный к ssh моим обычным ключом. Это не работало.
Я добавил строку GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.0.11::192.168.0.1:255.255.255.0::eth0:none"
к серверу /etc/default/grup
и обновленный grup. Это было предназначено для устранения проблемы IP. Но это не работало также.
Я теперь полностью раздражаюсь и в конце моего терпения. Где я шел не так, как надо? Кроме того, синтаксис для права настроек IP, потому что в одном руководстве говорится ::eth0:off
и следующее говорит ::etho:none
?
Существует кто-то с тем, что, кажется, та же проблема на 15,04.
Я могу теперь соединиться с сервером. Оказывается, я скопировал неправильный закрытый ключ для использования с dropbear. Ошибка была исправлена в моем сценарии выше. Но добавление ключей все еще не работает (т.е. к dropbear's authorized_keys
файл). Существует слово, необходимо преобразовать открытые ключи, к которым Вы хотите добавить /etc/initramfs-tools/root/.ssh/authorized_keys
к формату dropbear, но я не хочу проводить время, ища как. Я только попробовал dss
открытые ключи. Возможно, dropbear просто нравится rsa
лучше?
Также я заметил, что пользовательские сценарии рычага, кажется, не работают. Они не включены в каталоги initramf, но lsinitramfs -l /boot/initrd.img-3.16.0-43-generic
перечисляет их как часть изображения. Настройки IP все еще проигнорированы также. Даже если я добавляю GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.0.11::192.168.0.1:255.255.255.0::eth0:none"
к grubconfig в /etc/default/grub
и обновите все.
Таким образом, это кажется этим /usr/lib/dropbear/dropbearconvert INPUTFORMAT OUTPUTFORMAT INFILE OUTFILE
программа должна преобразовать ключи. Параметр ФОРМАТА может быть также openssh
или dropbear
. Но не кажется, что это - ответ о том, как добавить ключи к серверам /etc/initramfs-tools/root/.ssh/authorized_keys
. Существующий ключ там уже находится в формате файла openssh с открытым ключом. Так добавление других ключей openssh-формата не должно быть проблемой. Все же это.
Вот , как Вы преобразовываете ключ dropbear. Сценарии запуска являются небольшим wonky для меня также...
Хорошо все, так на всякий случай Вы не нашли решение и ни для кого больше, кто вытягивает их волосы после учебных руководств онлайн для подъема этого и выполнения...
Все учебные руководства, которые я нашел онлайн, говорят/подразумевают, что файл
authorized_keys
входит
/etc/initramfs-tools/root/.ssh/
, когда на самом деле он, как предполагается, входит
/etc/dropbear-initramfs/
+1 @ceremcem для того, чтобы также показать это.
Это неясно, какие known_hosts беспокоят Вас - на сервере или на клиенте. Я использовал инструкции по http://blog.neutrino.es/2011/unlocking-a-luks-encrypted-root-partition-remotely-via-ssh/ на Debian. Я собираюсь перефразировать ту страницу и добавить некоторую тонкую настройку, которую я нашел полезным. Современные пакеты Dropbox Debian создают все необходимое, включает сервер во время установки, но учебное руководство, на которое ссылаются, так старо, что это упоминает случаи, когда ключи должны быть вручную созданы. YMMV.
A. На сервере. Как Вы правильно упомянули, dropbear, и ключи OpenSSH отличаются, но являются, предположительно, взаимозаменяемыми. В учебном руководстве говорится, что Вы могли создать на сервере ключи хоста с:
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
На самом деле это немного более твердо, чем это. Для меня на Debian Jessie шаги были:
Создайте ключ OpenSSH.
ssh-keygen-t rsa-b 4096-m PEM-f bootkey_rsa
Скопируйте его на сервере, то есть, компьютере, где у Вас, более вероятно, будет dropbearconvert. Там, преобразуйте его в dropbear формат:
/usr/lib/dropbear/dropbearconvert openssh dropbear bootkey_rsa bootkey_dropbear_rsa
Stil на сервере, войдите в корень, и извлечение из Dropbear адресует общедоступную часть файлу, где начальная загрузка dropbear ищет его:
dropbearkey-y-f bootkey_dropbear_rsa | grep "^ssh-rsa">/etc/dropbear-initramfs/authorized_keys
Обновление initramfs:
обновите-initramfs-u-k все
Очистка: удалите bootkey_dropbear_rsa и bootkey_rsa с сервера.
Обратите внимание, что местоположение, где known_hosts ожидается обновлением-initramfs, данным выше как /etc/dropbear-initramfs/authorized_keys
, гибко, и вероятно изменяется от дистрибутива до дистрибутива. Чтобы быть уверенными, Вы кладете его на правильное место, читаете исходный файл из /usr/share/initramfs-tools/hooks/dropbear
.
Другой необходимый ключ создается с:
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
B. На клиенте Вам нужны оба вида ключей, таким образом, существует другой known_hosts
. В учебном руководстве, на которое ссылаются команда для соединения:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@my.server.ip.addr \
"echo -ne \"MyS3cr3tK3y\" >/lib/cryptsetup/passfifo"
Один из ключей, id_rsa.initramfs
, файл /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
или bootkey_rsa
от раздела сервера.
На клиенте known_hosts
, может быть конфликт между ключом, который Вы уже имеете для сервера OpenSSH и dropbear сервера, который Вы просто установили. Я временно удалил из known_hosts
ключи для регулярных услуг OpenSSH, соединенное использование команды выше (игнорирование -o
параметр), был запрошен, если я доверяю ключу хоста, сказал и добавили его к моему known hosts
. Оттуда на, необходимо переместить ту последнюю строку в ее собственный known_hosts (~/.ssh/known_hosts.initramfs
в примере выше).
apt-get install dropbear initramfs-tools busybox
Просто скопируйте и вставьте свой открытый ключ (ключи) в /etc/dropbear-initramfs/authorized_keys
на СЕРВЕРЕ
Создайте следующий сценарий в /etc/initramfs-tools/hooks/crypt_unlock.sh
#!/bin/sh
PREREQ="dropbear"
prereqs() {
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions
if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
cat > "${DESTDIR}/bin/unlock" << EOF
#!/bin/sh
if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot; then
kill \`ps | grep cryptroot | grep -v "grep" | awk '{print \$1}'\`
# following line kill the remote shell right after the passphrase has
# been entered.
kill -9 \`ps | grep "\-sh" | grep -v "grep" | awk '{print \$1}'\`
exit 0
fi
exit 1
EOF
chmod 755 "${DESTDIR}/bin/unlock"
mkdir -p "${DESTDIR}/lib/unlock"
cat > "${DESTDIR}/lib/unlock/plymouth" << EOF
#!/bin/sh
[ "\$1" == "--ping" ] && exit 1
/bin/plymouth "\$@"
EOF
chmod 755 "${DESTDIR}/lib/unlock/plymouth"
echo To unlock root-partition run "unlock" >> ${DESTDIR}/etc/motd
fi
Сделайте это исполняемым файлом:
chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh
Править /etc/initramfs-tools/initramfs.conf
добавить (или изменение) строку:
IP=192.168.1.254::192.168.1.1:255.255.255.0::eth0:off
format [host ip]::[gateway ip]:[netmask]:[hostname]:[device]:[autoconf]
([hostname] can be omitted)
update-initramfs -u
sudo update-rc.d dropbear disable
ssh root@192.168.1.254 [-i ~/.ssh/id_rsa]