Вопрос или проблема
Я пытаюсь настроить сервер OpenSSH SFTP на Windows 10, используя локальную учетную запись пользователя (aspen) на сервере и пароль.
Мне удалось настроить и запустить сервер, но он не распознает локальную учетную запись пользователя при подключении через localhost на сервере. Подтвердил правильность пароля с помощью runas /User:aspen powershell
.
Я тестирую подключение, используя Filezilla с протоколом: SFTP, хост: localhost, пользователь: aspen и пароль: локальный пароль Windows пользователя aspen. Появляется ошибка: Access denied. Authentication failed. Could not connect to server.
sshd_config:
# Это системный файл конфигурации сервера sshd. Подробнее см. в
# sshd_config(5).
# Стратегия, используемая для параметров в sshd_config, состоит в том,
# чтобы указывать параметры с их значением по умолчанию, где это
# возможно, но оставлять их закомментированными. Раскомментированные
# параметры переопределяют значение по умолчанию.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# Шифры и ключи
#RekeyLimit default none
# Логирование
#SyslogFacility AUTH
#LogLevel INFO
SyslogFacility LOCAL0
LogLevel DEBUG3
# Аутентификация:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# По умолчанию проверяются как .ssh/authorized_keys, так и .ssh/authorized_keys2
# но это переопределяется, поэтому установки будут проверять только .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
# Для этого потребуются также ключи хоста в %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Измените на yes, если вы не доверяете ~/.ssh/known_hosts для
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Не читать файлы ~/.rhosts и ~/.shosts пользователя
#IgnoreRhosts yes
# Чтобы отключить туннелирование паролей в чистом виде, измените на no здесь!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Параметры GSSAPI
#GSSAPIAuthentication no
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# нет пути к баннеру по умолчанию
#Banner none
# переопределить значение по умолчанию no субсистем
Subsystem sftp sftp-server.exe
# Пример переопределения параметров на основе конкретного пользователя
#Match User anoncvs
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
ForceCommand internal-sftp
Match User aspen
X11Forwarding no
#AllowTcpForwarding no
PermitTTY no
PasswordAuthentication yes
ChrootDirectory C:\ICT\File_Share
#Match Group administrators
#AllowUsers [email protected]
AllowUsers aspen@localhost
Лог здесь, так как на этом форуме, кажется, срабатывал фильтр спама.
Имя локальной учетной записи – aspen, и при запуске отладки я просто запускаю .\sshd -ddd
в повышенном Powershell.
Зарегистрированный сервис sshd на Windows больше не запускается (ошибка 1067), хотя он работал до начала отладки, но это выходит за рамки вопроса, я упоминаю об этом в случае, если это дает какие-то подсказки о том, что происходит (мне интересно, может ли это быть проблемой с sshd_config).
ИЗМЕНЕНИЕ: Я думаю, что исправил любые проблемы с правами доступа к папкам, так как смог снова запустить сервис. Обновленные логи здесь. Я все еще вижу Failed password for invalid user aspen from ::1 port 51425 ssh2
Ответ или решение
Если вы столкнулись с проблемой, когда OpenSSH сервер на Windows 10 не принимает известный рабочий пароль, необходимо предпринять несколько шагов для диагностики и устранения данной проблемы. Рассмотрим теоретические аспекты, подкрепим их примерами и приведем возможные решения.
Теория
OpenSSH – это широко используемое программное обеспечение для обеспечения защищенного доступа к удаленным серверам посредством SSH, SFTP и SCP. На Windows 10 OpenSSH может работать как сервер, позволяя удаленным пользователям подключаться к системе. Архитектура OpenSSH подразумевает использование файла конфигурации sshd_config
, отвечающего за настройку поведения сервера, включая методы аутентификации пользователей.
Существует несколько причин, по которым может возникнуть ошибка аутентификации:
- Неверные настройки аутентификации: Например, сбой может быть связан с параметрами
PasswordAuthentication
илиAllowUsers
. - Ошибки в файле конфигурации sshd: Даже небольшая ошибка может изменить поведение сервера, например неправильно настроенный параметр
Match
. - Проблемы с пользовательскими учетными записями: Необходимо удостовериться, что учетная запись правильно настроена и имеет необходимый доступ.
- Ошибки с файловыми разрешениями: Неправильные разрешения для
.ssh
директории могут заблокировать доступ. - Проблемы с сервисом SSHD на Windows: Ошибки запуска службы также требуют внимания.
Пример
Рассмотрим конкретный случай, описанный вами. Вы настроили OpenSSH сервер и пытаетесь зайти, используя аккаунт aspen
. Файл конфигурации sshd_config
включает применяемый к aspen
Match User
блок, устанавливающий некоторые параметры, такие как:
- Запрет на TCP forwarding;
- Использование
ChrootDirectory
.
Однако попытка подключения приводит к ошибке аутентификации. Давайте рассмотрим конкретные шаги по устранению неполадок.
Применение
Шаг 1: Проверка конфигурации
-
Параметры аутентификации: Убедитесь, что
PasswordAuthentication
установлен вyes
, и раскомментируйте его, если он закомментирован (что указывает на использование значения по умолчанию, которое может бытьno
). -
Match User блок: Убедитесь в корректности всех внутренних параметров, особенно:
- Установите
PasswordAuthentication
в явноеyes
. - Не используйте параметры, которые блокируют использование пароля или саму возможность входа.
- Установите
-
Проверьте правильность указания
ChrootDirectory
: Убедитесь, что директория существует и у нее корректно установлены разрешения.
Шаг 2: Проверка пользовательской учетной записи
-
Убедитесь в том, что учетная запись
aspen
существует и ее пароль действительно корректен. Можно проверить с помощьюrunas /User:aspen cmd
или аналогичной команды. -
Проверьте права: Используйте команды PowerShell, чтобы убедиться, что пользователь имеет права на доступ к
ChrootDirectory
, если оно используется.
Шаг 3: Проверка службы SSHD
- Журналы событий Windows: Откройте "Просмотр событий" и проверьте журналы системы для ошибок, связанных с SSHD.
- Перезапуск службы: Убедитесь, что служба запущена. Если она останавливается с ошибкой 1067, это может указывать на проблему в конфигурации или разрешениях.
Шаг 4: Диагностика с помощью журналов
- Уровень журналов сервера: У вас установлен
LogLevel DEBUG3
, что даст подробную информацию. Проверьте логи для подробных данных об ошибке аутентификации. - Сравнение логов: Проверьте журналы на предмет строки с
Failed password for invalid user aspen
, чтобы понять причину проблемы.
Заключение
Устраивая проблемы с OpenSSH сервером на Windows, важно систематически проверять каждую гипотезу, начиная с конфигурации и заканчивая учетными записями и разрешениями. Диагностика с использованием логов и проверка ключевых параметров конфигурации помогут выявить и устранить возникающие ошибки. Надеюсь, приведенные советы помогут вам устранить проблему и настроить стабильную работу сервера.