"F" ключ при выполнении less
сделает "следование" подобным tail -f
, но я не уверен, достигнет ли это того, что Вы ищете здесь.
Для более новых версий Ubuntu, например, 14.04, я обнаружил комбинацию @dragly и этих блогпостов « отвечает очень полезно. Перефразировать:
(на сервере) Установите Dropbear
Sudo APT-Get Установить Dropbear
(на сервере) Копирование и назначение разрешений для корневого общего / закрытого ключа Вход
Sudo CP /etc/initramfs-tools/root/.ssh/id_rsa ~ /.
Пользователь Sudo Chown: User ~ / id_rsa
Не забудьте изменить User к вашему имени пользователя на сервере
(на клиенте) Petch Plouch Cale с сервера
SCP (Hidden) ~ / .ssh / id_rsa_dropbear
(на клиенте) добавьте запись на SSH Config
Host Parkia
Имя хоста 192.168.11.111.
Пользовательский корень
Userknownhostsfile ~ / .ssh / come_hosts.initramfs
Идентификатор ~ / .ssh / id_rsa_dropbear
Не забудьте изменить _parkia_ к тому, что вы хотите набрать «SSH My-Box».
(на сервере) Создать в этом файле в в
/etc/initramfs-tools/hooks/crypt_unlock.sh
(на сервере) Сделать файл исполняемый файл
Sudo Chmod + X /etc/initramfs-tools/hooks/crypt_unlock.sh.
Обновить initramfs
Sudo Update-initramfs -U
Отключить Spropbear Service на Boot, поэтому OpenSSH используется после дешифрования раздела
Sudo Update-rc.d dropbear
Вы закончите. Попробуй это. Проверьте сообщение в блоге, связанном выше для получения инструкций о том, как настроить сервер со статическим IP-адресом, если это то, что вам нужно сделать.
Я думаю, рано-ssh обеспечивает то, что Вы ищете:
Early-ssh is a simple initramfs hook, which installs Dropbear SSH server into
your initramfs, and starts it at boottime, so you will be able to do a lot of
things remotely over SSH, before your root partition gets mounted, for example:
* unlocking LUKS encrypted crypto devices -
even your root can be an encrypted filesystem
* assembling/altering RAID arrays (mdadm)
* checking the root filesystem in read-write mode,
taking action in case of errors
* and so on...
Уже существует .deb доступный пакет, таким образом, Вы соглашаетесь, вероятно, с Ubuntu.
Если Вы хотите смочь загрузиться необслуживаемый, а также удаленно, необходимо также посмотреть на Mandos (который я и другие записали):
Mandos является системой для разрешения серверов с зашифрованными корневыми файловыми системами перезагрузить необслуживаемый и/или удаленно. Посмотрите вводный файл страницы руководства для получения дополнительной информации, включая список FAQ.
Короче говоря, сервер начальной загрузки получает пароль по сети безопасным способом. Посмотрите README для деталей.
Бездисплейный сервер? Если это имеет последовательный порт, используйте его.
GRUB может быть настроен для работы по последовательному порту. Ваше ядро может также быть настроено, используют последовательный порт для вывода первоначальных сообщений загрузки, ввода пароля для разблокирования дисков и входа в систему. (Если Ваш сервер поддерживает последовательный BIOS, включите это также. Затем Вы никогда не должны будете подключать монитор к машине вообще).
Всегда хорошая идея иметь "несетевой" способ войти в бездисплейный сервер.
Руководство, чтобы сделать такую установку с BusyBox и Dropbear показывают в этом сообщении в блоге. рано-ssh не работал на меня и больше по-видимому не нужен.
Я суммировал то, что необходимо сделать в следующем. Для получения дополнительной информации взгляните на сообщение выше:
Установите BusyBox и Dropbear на Вашем сервере
sudo apt-get install dropbear busybox
Обновите свой initramfs на сервере
sudo update-initramfs -u
Скопируйте закрытый ключ, сгенерированный dropbear к Вашей клиентской машине. Вам, вероятно, придется скопировать это в новый dir и изменить владение, чтобы сделать это. На Вашем сервере делают следующее:
sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/.
sudo chown user:user ~/id_rsa
Не забудьте заменять пользователя своим именем пользователя. Логины пароля, кажется, не работают.
Теперь можно передать закрытый ключ с scp путем вызова следования клиента:
scp user@remote.server:~/id_rsa ~/.ssh/id_rsa_dropbear
Настройте ~ своего клиента/.ssh/config файл для легкого входа в систему. Откройте его с текстовым редактором и добавьте следующее:
Host myremoteserver
HostName my.remote.server
User root
UserKnownHostsFile ~/.ssh/known_hosts.initramfs
IdentityFile ~/.ssh/id_rsa_dropbear
Измените Хост того, что Вы любите и HostName к названию Вашего сервера. Позвольте пользователю быть корнем. Это, кажется, единственный принятый пользователь в Dropbear. Сохраните и закройте файл.
Перезапустите свой сервер и ожидайте подсказки пароля. Дайте Dropbear несколько секунд, чтобы обнаружить и настроить его интернет-соединение. Соединитесь со своим сервером со следующей командой на Вашем клиенте:
ssh myremoteserver # or any name you chose
При входе в систему дайте следующую команду на сервере. Посмотрите сообщение в блоге для деталей:
pid=`ps | grep "/scripts/local-top/cryptroot" | cut -d " " -f 3`
kill -9 $pid
sleep 35
/scripts/local-top/cryptroot
pid=`ps | grep "/bin/sh" | cut -d " " -f 3`
kill -9 $pid;
Это займет время (30 секунд), прежде чем Вы доберетесь для ввода пароля. Введите его при запросе.
Закройте соединение путем ввода
exit
Ваш сервер должен был теперь разблокировать свой зашифрованный жесткий диск и начальную загрузку как нормальные.
(Огромное благодаря исходному автору сообщения в блоге!)
Взгляните на cryptsetup readme для этого в /usr/share/doc/cryptsetup/README.remote.gz
(Пакет Ubuntu cryptsetup
). Там полное руководство для выполнения этого. Это подобно ответу dragly, но я думаю, что это немного более изящно. (Dropbear отформатировал ключи, передав пароль через FIFO, а не хрупкий сценарий оболочки, и т.д.),
разблокирование rootfs через ssh входит в систему в initramfs
Можно разблокировать rootfs на начальной загрузке от удаленного, с помощью ssh для входа в загружающуюся систему, в то время как это работает со смонтированным initramfs.
Установка
Чтобы удаленное разблокирование работало, следующие пакеты должны быть установлены прежде, чем создать initramfs:
dropbear
busybox
Файл
/etc/initramfs-tools/initramfs.conf
содержит параметры конфигурации, используемые при создании initramfs. Это должно содержатьBUSYBOX=y
(это установлено по умолчанию, когда busybox пакет установлен) иметь busybox, установленный в initramfs, и не должен содержатьDROPBEAR=n
, который отключил бы установку dropbear к initramfs. Если установлено наDROPBEAR=y
, dropbear будет установлен в любом случае; еслиDROPBEAR
не установлен вообще, затем dropbear будет только установлен в случае существующей установки cryptroot.Ключи хоста, используемые для initramfs,
dropbear_dss_host_key
иdropbear_rsa_host_key
, оба расположились в/etc/initramfs-tools/etc/dropbear/
. Если они не будут существовать, когда initramfs будет скомпилирован, они будут созданы автоматически. Следующее является командами для создания их вручную:dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
Поскольку initramfs не будет зашифрован, аутентификация с открытым ключом принята. Ключ (ключи), используемый для этого, будет взят от
/etc/initramfs-tools/root/.ssh/authorized_keys
. Если этот файл не будет существовать, когда initramfs будет скомпилирован, он будет создан и/etc/initramfs-tools/root/.ssh/id_rsa.pub
будет добавлен к нему. Если последний файл не будет существовать также, то он будет сгенерирован автоматически - Вы найдете закрытый ключ соответствия, под которым необходимо будет позже войти в систему initramfs/etc/initramfs-tools/root/.ssh/id_rsa
(илиid_rsa.dropbear
в случае, если Вам нужен он в dropbear формате). Следующее является командами, чтобы сделать соответствующие шаги вручную:Создать ключ (в dropbear формате):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Преобразовать ключ от dropbear формата до openssh формата:
/usr/lib/dropbear/dropbearconvert dropbear openssh \ /etc/initramfs-tools/root/.ssh/id_rsa.dropbear \ /etc/initramfs-tools/root/.ssh/id_rsa
Извлечь открытый ключ:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \ grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Добавить открытый ключ к authorized_keys файлу:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
В случае, если Вы хотите, чтобы некоторый интерфейс получил настроенное использование dhcp, установку
DEVICE=
в/etc/initramfs-tools/initramfs.conf
должно быть достаточным. initramfs должен также соблюдатьip=
параметр ядра. В случае, если Вы используете личинку, Вы, вероятно, могли бы хотеть установить ее в/boot/grub/menu.lst
, любой в'# kopt=
'строка или добавленный к определенному'kernel
'строка (строки).ip=
параметр ядра документируется вDocumentation/nfsroot.txt
в исходном дереве ядра.Проблемы
Не забывайте работать
update-initramfs
когда Вы изменили конфигурацию для создания этого эффективным!Сбор достаточной энтропии для ssh демона иногда, кажется, проблема. Запуск ssh демона мог бы быть задержан, пока достаточно энтропии не было получено. Это не блокируется для процесса запуска, поэтому когда Вы в консоли, Вы не должны будете ожидать sshd для завершения его запуска.
Разблокирование процедуры
Для разблокирования от удаленного Вы могли сделать что-то вроде этого:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \ -i "~/id_rsa.initramfs" root@initramfshost.example.com \ "echo -ne \"secret\" >/lib/cryptsetup/passfifo"
Этот пример предполагает, что у Вас есть дополнительное
known_hosts
файл"~/.ssh/known_hosts.initramfs
"который содержит ключ хоста cryptroot системы, что у Вас есть файл"~/id_rsa.initramfs
"который содержит авторизованный ключ для cryptroot системы, что имя cryptroot системы"initramfshost.example.com
", и что cryptroot пароль"secret
"-- <
debian@x.ray.net
>, среда, 30 сентября 2009
Благодаря засаде для указания на это мне на другом канале.
read -s -p
.
– joelpet
22.02.2015, 00:55
Я написал неспособную роль, которая делает это для вас. Просто получите роль DebOPS-INPOP.DROPBEAR_INITRAMFS и запустить его. Обратитесь к документации по работе .
В Arch Linux есть пакет AUR dropbear_initrd_encrypt , который делает то, что вы хотите, из коробки. Очень хорошо работает с проводными интерфейсами. Пришлось немного подправить для беспроводной связи.
К сожалению, ни один из вышеперечисленных ответов мне не помог. Более того, копирование закрытого ключа с сервера кажется парадоксальным.
Как бы то ни было, следующие инструкции сработали:
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
, чтобы добавить (или изменить) строку:
#format [host ip]::[gateway ip]:[netmask]:[hostname]:[device]:[autoconf]
#([hostname] can be omitted)
IP=192.168.1.254::192.168.1.1:255.255.255.0::eth0:off
update-initramfs -u
sudo update-rc.d dropbear disable
ssh root@192.168.1.254 [-i ~/.ssh/id_rsa]
Я использовал технику, описанную другими на этой странице (SSH в initramfs с параметром ядра IP
для настройки сети )уже несколько лет, чтобы удаленно разблокировать безголовые серверы Ubuntu Linux (12.02, 14.04, 16.04 и 18.04 ).
Я даже зашел так далеко, что разработал программу на Python(разблокировать -удаленную -систему ), которая делает фактическую разблокировку за меня, потому что процесс выполнения этого вручную казался немного хрупким, и я начал бояться перезагрузки своих серверов, поэтому в духе «если это больно, стоит автоматизировать» я закодировал свои знания в Python (, и это действительно значительно упростило регулярные перезагрузки для установки обновлений безопасности ).
С тех пор я решил также поделиться своими личными заметками о шифровании удаленного корневого диска со всем миром. Связанная страница содержит довольно много подробностей о процедуре (, а также некоторые подсказки, которые здесь не упомянуты ), и я намерен поддерживать ее в актуальном состоянии.