Назад | Перейти на главную страницу

SSH / SCP без пароля не работает?

Рассмотрим следующий сценарий: администратор настроил пару открытого и закрытого ключей для использования при синхронизации файлов между серверами, чтобы избежать запроса пароля. Эта установка отлично работает.

Затем при попытке использовать SSH / SCP система запрашивает пароль.

Вопрос: почему это так, если rsync работает правильно?

Как вы настроили сервер, чтобы разрешить ваш ключ? Поместив свой открытый ключ в .ssh / authorized_keys на сервере? Если это так, он должен работать. Используете ли вы те же имена пользователей (как удаленные, так и локальные) при использовании ssh / scp, что и при использовании rsync?

Да, кстати, я думаю, этот вопрос следует задать на serverfault.com.

Большое спасибо, мне удалось решить проблему с помощью элемента конфигурации

~ / .ssh / config PasswordAuthentication нет

и установка разрешений 700 для каталога .ssh и 600 authorized_keys.

Этот пост был очень полезным

большое спасибо.

  • Амар.

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

На стороне сервера: /usr/sbin/sshd -Dedd -p 2222

Сторона клиента: ssh -vv -p 2222 server

См. Раздел справочной страницы ssh по аутентификации. Некоторые возможности:

  • Ваш клиент может по умолчанию использовать аутентификацию по паролю
  • Ваш идентификационный файл не использует имя по умолчанию (например, id_rsa см. Параметры для -i)
  • Вы столкнулись с одной из проблем конфигурации, указанных в разделе "Проверка подлинности".

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

На сервере проверьте соответствующий файл журнала, чтобы увидеть, есть ли там какие-либо сообщения. Самая распространенная причина отказа сервера использовать в противном случае правильно настроенные ключи - это ошибки разрешений (ваш домашний каталог, ~/.ssh/ и ~/.ssh/authorized_keys должны иметь достаточно безопасные разрешения, иначе сервер не будет доверять содержимому ~/.ssh/authorized_keys так как они могли быть изменены другим пользователем). Если аутентификация на основе ключа была отклонена по этой причине, она будет зарегистрирована (как и по ряду других причин). Обычно это в /var/log/auth.log (по крайней мере, в Debian и аналогичных системах с конфигурацией SSHD по умолчанию место входа может отличаться).

Еще одна вещь, которую нужно попробовать, чтобы получить больше информации, - это повысить многословность клиента SSH. Если вы используете OpenSSH из командной строки, добавьте -v для более подробного вывода при подключении, и -v снова (или просто -vv так как варианты могут быть сгруппированы таким образом), чтобы он был еще болтливее.

Проверьте журналы аутентификации (возможно, один из / var / log / secure или /var/log/auth.log) на сервере - они обычно немного более подробны, чем клиент (даже если вы добавляете -vvv в ssh команда).

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

Я бы рекомендовал добавить это в ~ / .ssh / config чтобы никогда не запрашивали пароль. Это не заставит клавиши работать волшебным образом, но сделает скрипт, который дает сбой, немного быстрее и понятнее.

PasswordAuthentication no

Вы уверены, что он не запрашивает парольную фразу для расшифровки ключа, а не имя пользователя и пароль для входа на сервер?

Мы обсуждали это в «Перевод rsync в неинтерактивный режим». Там вы можете прочитать о многих возможных решениях, но вкратце:

rsync -e 'ssh -o "NumberOfPasswordPrompts 0"' source user@target:/path

(Спасибо, гусс!) Что не требует изменения конфигурации, которое могло бы повлиять на некоторые другие варианты использования rsync или ssh на сервере.

Уди