Попытка выполнить ssh-аутентификацию с помощью файлов ключей: сервер отказался от нашего ключа

Я пытаюсь настроить ssh-аутентификацию с помощью файлов ключей вместо имени пользователя / пароля. Клиент - это Windows box, работающий под управлением PuTTY, а сервер - сервер Ubuntu 12.04 LTS.

Я скачал puttygen.exe и заставил его сгенерировать пару ключей. В /etc/ssh/sshd_config У меня есть эта строка:

AuthorizedKeysFile %h/.ssh/authorized_keys

и в файле открытого ключа моего клиента написано следующее:

---- BEGIN SSH2 PUBLIC KEY ----Comment: "my@email.address.com"ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJGNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83AV1pKxs=my@email.address.com---- END SSH2 PUBLIC KEY ----

Я скопировал часть из "ssh-rsa AAA" в "my@email.address.com&quot ; и поместите это в файл ~/.ssh/authorized_keys на моем сервере (в моем собственном домашнем каталоге). В PuTTY в разделе Connection > SSH > Auth я ввел путь к закрытому ключу, который он сгенерировал на моем клиенте, и сохранил настройки сеанса.

Я перезапустил ssh-сервер с помощью

sudo service ssh restart

Теперь, если я загружаю профиль в PuTTY (я проверил, что закрытый ключ все еще находится в соединении & gt; SSH & gt; Auth и что путь правильный) и запускаю профиль, он говорит

Server refused our key

Я попытался поместить открытый ключ в файл под каталог ./ssh/authorized_keys/ но это не помогло, поэтому я использовал ./ssh/authorized_keys как файл, вставив в него ключ. Я также попытался сгенерировать пару закрытого / открытого ключей на сервере, поместив открытый ключ в ./ssh/authorized_files и загружаю личный файл в PuTTY на моего клиента. Перезагрузка сервера тоже не помогла.

Я обнаружил, что ошибка может быть устранена путем помещения ключа в место за пределами домашней папки пользователя, но это полезно только в том случае, если домашняя папка зашифрована, а это не так.

Также попытался сгенерировать 4096-битный ключ, думая, что, возможно, 1024 - это слишком мало.

Как я могу заставить это работать? Спасибо!

РЕДАКТИРОВАТЬ:

Хорошо, /var/log/auth.log сказал:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google говорит мне ~/.ssh/ должно быть 700 и и ~/.ssh/authorized_keys должно быть 600, так что я так и сделал. Сейчас /var/log/auth.log говорит:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

Хорошо, это исправлено, однако я не вижу, чем это отличается от того, что я уже пробовал.

Что я сделал:

  • создайте пару ключей с помощью puttygen.exe (длина: 1024 бита)
  • загрузите закрытый ключ в профиль PuTTY
  • введите открытый ключ в ~/.ssh/authorized_keys в одной строке(ssh-rsa {your_public_key} с промежутком не более одного раза между ssh-rsa и ваш ключ)
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • менять /etc/ssh/sshd_config таким образом, он содержит AuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Для устранения неполадок выполните # tail -f /var/log/auth.log.

Спасибо за вашу помощь!

Я только что столкнулся с этой проблемой. Несмотря на правильную настройку конфигурации, как уже упоминалось в этой теме (разрешения на authorized_keys и т.д.), Оказывается, у меня был открытый ключ в неправильном формате. Это было в форме:

---- BEGIN SSH2 PUBLIC KEY ----Comment: "imported-openssh-key"AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT---- END SSH2 PUBLIC KEY ----

Что не сработало. Но заставил его работать, имея его в форме:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

Мне пришлось изменить права доступа к домашнему каталогу

chmod 700 ~

проблема в том, что Windows использует другой новая линия чем linux, поэтому при копировании ключа из windows в linux возникает \n в конце строки, которую вы не можете увидеть в linux в редакторе.

Если вы используете файл /var/log/auth.войдите в систему и попробуйте войти в систему, ошибка выглядит так:

sshd: ошибка: key_read: uudecode AAAAB3N[....]==\n

Если вы измените свой ключ в Windows, чтобы он был в одной строке без новая линия в конце и скопируйте его затем в linux, он должен работать (сделал трюк для меня).

Мне пришлось изменить права доступа к каталогу ~/.ssh с 770 на 700 и права доступа к файлу ~/.ssh/authorized_keys с 660 на 600.

По какой-то причине удаление групповых разрешений устранило эту проблему для меня.

chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

То ~/.ssh/authorized_keys файл требует, чтобы все ключи находились в одной строке. Если вы добавили его в несколько строк, как в вашей вставке выше, попробуйте соединить строки.

Вот что сработало для меня:

В puttygen, после того как вы сгенерировали свои ключи, убедитесь, что вы скопировали и вставили информацию из верхнего поля, чтобы перейти в ваш файл authorized_keys. Если вы сохраните свой открытый ключ на своем клиентском компьютере, а затем откроете его, текст будет отличаться от текста в верхней части puttygen экран. Опять же, убедитесь, что вы скопировали и вставили текст из верхней части puttygen экран (после того, как вы создали свои ключи) в ваш файл authorized_keys, который должен находиться в ~/.ssh.

В дополнение ко всем вышеприведенным ответам убедитесь, что вы скопировали и вставили ключ из puttygen правильно!

Если вы просто дважды щелкните по основной части ключевой строки, чтобы выбрать ее, вы можете не получить всю строку целиком, потому что текстовое поле разбивает строки на некоторые символы, например +, так что вы не выделяете текст после + символ (который вы не видите, потому что текстовое поле слишком маленькое). Обязательно выберите всю строку вручную из списка ssh-rsa до самого конца текстового поля.

Иногда это может быть проблема, связанная с тем, что открытый ключ находится не в одной строке, поэтому такой подход, похоже, решает ее:

echo 'the content of the public key' >> /root/.ssh/authorized_keys

для меня проблема заключалась в том, что я создал ~/.ssh/authorized_keys используя root, так что root принадлежит. Я должен был chown sshuser:sshuser ~/.ssh/authorized_keys затем это начало работать

/var/log/auth.журнал очень помогает, спасибо =)

+1 для проверки /var/log/auth.log. У меня была несвязанная проблема, но проверка этого файла журнала помогла мне решить ее.