Ошибка `не удалось загрузить ключ хоста` при попытке воссоздать ключи хоста SSH

13

Я пытаюсь воссоздать ключи хоста ssh-сервера.

У меня есть как минимум два способа сделать это:

  • С dpkg-переконфигурировать

    dpkg-reconfigure openssh-server
    

    Это прекрасно работает, но я не могу дать длину ключа тогда. Я хочу, например, 4096 для ключа RSA.

  • Вручную с помощью ssh-keygen

    sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa
    

    Это воссоздает мне ключи, но после перезапуска сервера я получаю следующее сообщение об ошибке :

    could not load host key: /etc/ssh/ssh_host_rsa_key
    

    поэтому я проверил файл sshd_config, что там:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    соответствует идеально. Итак, я проверил владельца и права на все мои ключи

    -rw------- 1 root root 3326 Mär 24 08:57 ssh_host_rsa_key
    

    Когда я удаляю все ключи и воссоздаю их dpkg-reconfigure openssh-server, ключи становятся меньше и имеют те же права доступа к файлам, что и выше.

Вопрос: Как я могу использовать dpkg-reconfigureс keylengh 4096 для RSA?

Эмиль Соммер
источник
Пожалуйста, запустите sshdв режиме отладки из командной строки ( sudo sshd -d) для получения дополнительной информации о проблеме и опубликовать вывод.
Дэвид Фёрстер
@DavidFoerster Это похоже на хорошее предложение. Я попытался воссоздать проблему путем временного перемещения моих ключей, создания новых ключей с паролями, остановки и перезапуска ... Я не получаю сообщение об ошибке OP. Это результат, который я получаю на livewire@za20:/etc/ssh$ sudo sshd -dвыходе. sshd re-exec requires execution with an absolute pathВ противном случае я бы включил пример в свой ответ :(
LiveWireBT
Извините, это должно было быть sudo /usr/sbin/sshd -d. Полученная ошибка подразумевается буквально (хотя и не совсем ясно).
Дэвид Фёрстер
Хотя принятый ответ решает проблему, я все еще задаюсь вопросом о последнем вопросе в первом посте: Как я могу использовать dpkg-reconfigureс длиной ключа 4096? Где-нибудь есть файл конфигурации, который содержит эту информацию? Я осмотрел базы данных debconf (in /var/cache/debconf/), но не нашел ничего похожего на длину ключа.
ph0t0nix

Ответы:

8
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa

воссоздает мне ключи. но после перезапуска сервера я получаю

could not load host key: /etc/ssh/ssh_host_rsa_key

Вы создаете хост-ключ с паролем. Есть ли какие-либо настройки, чтобы разблокировать этот hostkey? Если нет, то я думаю, что именно этого и следует ожидать: скрипт, который управляет службой, запускается, пытается загрузить хост-ключ и завершается неудачей. Насколько я знаю, вы не должны создавать хост-ключи, защищенные паролями.

Если вы заинтересованы в усилении безопасности своего SSH-сервера, я рекомендую прочитать https://stribika.github.io/2015/01/04/secure-secure-shell.html команду, использованную для создания ключа хоста в этом документе:

ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key

Но вы должны прочитать весь документ, прежде чем вносить какие-либо изменения.

LiveWireBT
источник
работает. просто убираю мой очень длинный пароль здесь. Кстати: действительно хорошая статья для чтения. на самом деле openssh происходит из ubuntu-repro в моем случае и не поддерживает KexAlgorithms curve25519-sha256 @ libssh.org, diffie-hellman-group-exchange-sha256
Эмиль Соммер
20

Ни один из ответов выше не работал для меня. Я исправил свою систему Ubuntu, выполнив следующие действия:

/usr/bin/ssh-keygen -A
MichaelICE
источник
1
ЭТО. Это реальный ответ, что подтверждается man-страницей для ssh-keygen о флаге «-A»: для каждого из типов ключей (rsa1, rsa, dsa, ecdsa и ed25519), для которых не существует ключей хоста, сгенерируйте ключи хоста с путем к файлу ключа по умолчанию, пустой парольной фразой, битами по умолчанию для типа ключа и комментарием по умолчанию. Это используется сценариями системного администрирования для генерации новых ключей хоста.
BoomShadow
1

Просто запустите:

ssh-keygen -t rsa -b 4096

ssh-keygen генерирует ключ SSH.

  • -t указывает тип ключа для создания
  • -b указывает количество бит в ключе.

Смотрите эту страницу для получения дополнительной информации.

amrx
источник
это не ответ. пожалуйста, посмотрите мой вопрос, я уже сделал это, с тем результатом, что hostkey не может быть загружен.
Эмиль Соммер
3
@EmilSommer Нет, что именно это ответ, просто отсутствует объяснение (почему вы получите сообщение об ошибке , и что это значит).
LiveWireBT