25

После обновления до Fedora 23 аутентификация без пароля (на основе открытого ключа) больше не работает в SSH: при попытке SSH к некоторому хосту он запрашивает мой пароль на удаленном хосте. Я не могу заставить его использовать мой закрытый ключ SSH. Все работало нормально с Fedora 22.

Мой открытый ключ - это ключ DSA (~/.ssh/id_dsa.pub). Я использую OpenSSH 7.1 (openssh-7.1p1-5.fc23.x86_64).

Как я могу получить проверку подлинности без пароля для правильной работы снова?

2 ответа2

39

Это результат обновления до OpenSSH 7.0. Как говорится в примечаниях к выпуску OpenSSH 7.0, «поддержка хоста и пользовательских ключей ssh-dss по умолчанию отключена во время выполнения».

Решение состоит в том, чтобы добавить следующую строку в ~/.ssh/config на каждом клиентском компьютере (на каждом компьютере, на котором вы запускаете SSH-клиент):

PubkeyAcceptedKeyTypes=+ssh-dss

Если сервер использует OpenSSH 7.0 или новее, вам также необходимо добавить эту строку в /etc/ssh/sshd_config на каждом сервере.

Кроме того, вы можете сгенерировать совершенно новый ключ SSH и добавить его в свой файл author_keys на каждом сервере, на котором вы когда-либо захотите войти. Я рекомендую вам использовать RSA, чтобы избежать проблем совместимости. Я не рекомендую ECDSA, так как очевидно, что gnome-keyring-daemon автоматически не получает ключи SSH типа ECDSA.


Редакционная заметка: почему люди OpenSSH отключили ключи DSA? Я не знаю. Насколько я могу убедиться, в безопасности ключей DSA (ssh-dss) нет ничего плохого. На веб-странице OpenSSH утверждается, что ssh-dss является слабым, но, насколько я знаю, 1024-битный ssh-dss не слабее 1024-битного RSA, и 1024-битные ключи RSA не отключены.

0

Мои два цента

Что касается редактирования файла .ssh/config для того, чтобы это казалось не очень хорошей идеей, я предлагаю

  1. Создайте новый ключ, используя недавний инструмент.

    Затем скопируйте новый открытый ключ (в клипборд)

  2. Войдите в последний раз , используя старый ключ:

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    

    Затем обновить @host «s authorized_keys файл, добавив свой новый Публичный и выход из системы

    cat >>.ssh/authorized_keys
    

    вставить , затем Ctrl+D

  3. Войдите с новым ключом, используя синтаксис по умолчанию:

    ssh user@host
    
    1. Затем обновить @host «s файл authorized_keys удалив старый Публичных (я использую sed -e 1d -i .ssh/authorized_keys , когда мой старый Публичных находится в строке 1 этого файла).

    2. Я предлагаю обновить ваш SSH сервер, если вы можете.

    3. выйти
  4. Проверьте, не работает ли старый ключ больше.

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    ...
    Permission denied...
    

    Это должно не работать ;-)

  5. Вы могли бы даже перепроверить, все ли в порядке:

    ssh user@host uptime
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .