Вопрос или проблема
sFTP с ключевой аутентификацией требует пароль
Я новичок в sFtp и аутентификации с помощью файлов ключей. Вот в чем моя проблема:
1- У меня есть сертификат .p12 (предоставленный владельцем хоста); с помощью openssl я извлек файл моего закрытого ключа (.pem) из него.
2- Используя этот файл, я пытался войти через клиент WinSCP; и поскольку WinSCP не поддерживает файлы .pem, я преобразовал файл в формат .ppk.
3- Когда я пытаюсь войти с помощью моего файла .ppk, кажется, что хост не отказывается от моего ключевого файла, но все равно запрашивает пароль (которого у меня нет, потому что аутентификация осуществляется только с помощью файлов ключей). Поэтому я не уверен, где я ошибся и почему сервер все еще запрашивает у меня пароль; сейчас я застрял с сообщением “Требуется дальнейшая аутентификация”.
Вот мои логи клиента WinSCP, когда я пытаюсь войти:
. Поиск хоста "xxxxx.yyyy" для SSH соединения
. Подключение к xx.xxx.xxx.xxx порт 22
. Мы заявляем версию: SSH-2.0-WinSCP_release_5.11
. Версия сервера: SSH-2.0-SSHD
. Используя версию протокола SSH 2
. Имеем известный ключ хоста типа rsa2
. Выполнение обмена группами Диффи-Хеллмана
. Выполнение обмена ключами Диффи-Хеллмана с хешом SHA-256
. Отпечаток ключа хоста:
. ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
. Проверка ключа хоста rsa2 0x....
. Ключ хоста совпадает с закэшированным ключом
. Инициализировано AES-256 SDCTR шифрование клиент->сервер
. Инициализирован алгоритм MAC HMAC-SHA1 клиент->сервер
. Инициализировано AES-256 SDCTR шифрование сервер->клиент
. Инициализирован алгоритм MAC HMAC-SHA1 сервер->клиент
. Чтение ключевого файла "C:\OpenSSL-Win64\bin\private.ppk"
! Используя имя пользователя "myusername".
. Сервер предложил следующие методы аутентификации: пароль, публичный ключ, интерактивная клавиатура
. Предложенный публичный ключ
. Предложение публичного ключа принято
! Аутентификация с публичным ключом "imported-openssh-key"
. Отправлен подпись публичного ключа
! Требуется дальнейшая аутентификация
Стандартный протокол SSH/SFTP не использует сертификаты. Используется только простая пара ключей.
Есть проприетарная реализация в OpenSSH, которая позволяет использовать сертификаты:
https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?annotate=HEAD
Но это реализовано только в инструментарии OpenSSH (как клиент, так и сервер).
WinSCP, FileZilla или PuTTY (и другие) не поддерживают этот проприетарный метод аутентификации.
Но ваш сервер, похоже, не является OpenSSH. Поэтому информация о том, что у вас есть сертификат, может быть неверной.
Ответ или решение
Ваша проблема, связанная с использованием SFTP и аутентификацией с помощью ключей, кажется довольно распространенной среди новичков. Попробую помочь вам разобраться.
-
Понять сертификаты и ключи: Вы упомянули, что у вас есть .p12 сертификат, а затем вы извлекли из него частный ключ в формате .pem, который вы затем конвертировали в формат .ppk для WinSCP. Важно отметить, что стандартный SSH/SFTP не использует сертификаты — это протокол, который работает только на основе простой пары ключей (публичный и частный). Таким образом, если ваш сервер действительно требует сертификаты для аутентификации, это может быть признаком того, что он не использует стандартный метод SSH.
-
Проверка формата ключа: Убедитесь, что ваш файл .ppk корректно настроен. Иногда конвертация из .pem в .ppk может быть ошибочной. Рекомендуется использовать PuTTYgen, чтобы убедиться, что ключ действительно импортирован корректно. Для этого выполните следующие шаги:
- Откройте PuTTYgen.
- Нажмите "Load" и выберите ваш .pem файл.
- Затем сохраните его в формате .ppk, используя "Save private key".
-
Проверка настроек сервера: Судя по вашему логу, сервер принимает публичный ключ, но затем требует дальнейшей аутентификации. Это может означать, что сервер не распознает ваш ключ или что нужны дополнительные шаги для его активации. Проверьте:
- Верно ли добавлен ваш публичный ключ в
~/.ssh/authorized_keys
на сервере. Пожалуйста, убедитесь, что нет проблем с правами доступа к этому файлу и папке. - Нет ли ошибок в конфигурации SSH-сервера, которые могут мешать аутентификации (например, возможно, требуется включение конкретного метода аутентификации).
- Верно ли добавлен ваш публичный ключ в
-
Клиентская сторона: Убедитесь, что вы используете правильное имя пользователя и адрес сервера. Правильный интерфейс WinSCP также важен для успешного подключения:
- Откройте WinSCP и создайте новую сессию.
- Введите имя хоста, имя пользователя и выберите "Use public key authentication".
- Убедитесь, что выбран правильный .ppk файл.
- Проверка серверных настроек: Возможно, есть различия в самих настройках SSH. Если ваш сервер использует другую реализацию SSH, он может не поддерживать определенные методы аутентификации. В этом случае уточните у провайдера, какие методы аутентификации он поддерживает и есть ли возможность использования аутентификации по ключу.
Если после выполнения этих шагов проблема все еще не решена, рекомендую обратиться к поддержке вашего хостинг-провайдера или администратору сервера для получения дополнительных сведений о конфигурации сервера и необходимых шагах для успешной аутентификации с использованием ключей.