Ошибка аутентификации пользователя домена для SSH-соединения

Вопрос или проблема

Я пытаюсь настроить свою машину с Windows 10 как SSH-сервер, используя Win32-OpenSSH. Сервер является частью домена, поэтому я использую команду

ssh -i ~/.ssh/id_rsa -l user@domain ip_address

для подключения с моего SSH-клиента.

Это вызывает ошибку “Permission denied (publickey,keyboard-interactive)”. На стороне сервера в журнале написано

sshd: Invalid user user@domain from ip_address port 59676

sshd: Connection closed by invalid user user@domain ip_address port 59676
[preauth]

Я также пробовал следующую вариацию команды SSH

ssh -i ~/.ssh/id_rsa domain/user@ip_address

для попытки подключения с клиентской стороны. Я получаю ошибку “Connection reset by ip_address port 22”.

Если я посмотрю в журнал на стороне сервера, он говорит:

sshd: error: lookup_principal_name: User principal name lookup failed
for user ‘domain\user’ (explicit: 5, implicit: 5)”

sshd: error: get_user_token – unable to generate token on 2nd attempt for user
domain\user

sshd: fatal: ga_init, unable to resolve user domain\user

Как я могу решить эту ошибку?

Детали

На стороне сервера (Windows 10):

whoami подтверждает, что мое имя пользователя domain\user

Я хотел бы использовать только аутентификацию с помощью публичного ключа, поэтому установил разрешения в sshd_config на

PubkeyAuthentication yes
PasswordAuthentication no

Все остальные настройки по умолчанию. Полный файл sshd_config приведен ниже

# Это системный файл конфигурации сервера sshd. См.
# sshd_config(5) для получения дополнительной информации.

# Стратегия, используемая для опций в конфигурации sshd_config по умолчанию, поставляемой с
# OpenSSH, заключается в указании опций с их значением по умолчанию, где
# это возможно, но оставлении их закомментированными. Не закомментированные опции переопределяют
# значение по умолчанию.

#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

# Аутентификация:

#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
PubkeyAuthentication yes
PasswordAuthentication 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

# переопределение по умолчанию для отсутствия подсистем
Subsystem   sftp    sftp-server.exe

# Пример переопределения настроек на основе пользователя
#Match User anoncvs
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

У меня есть id_rsa.pub, добавленный в файл authorized_keys в директории C:\Users\user\.ssh. icacls .\authorized_keys возвращает

C:\Users\user\\.ssh\authorized_keys NT AUTHORITY\SYSTEM:(I)(F)
                  BUILTIN\Administrators:(I)(F)
                  DOMAIN\user:(I)(F)

На стороне клиента (Ubuntu 20.04.3):

~/.ssh/id_rsa имеет следующие разрешения

-rw------- 1 ubuntu ubuntu 2655 Dec 30 18:16 id_rsa
-rw-r--r-- 1 ubuntu ubuntu  576 Dec 30 18:16 id_rsa.pub

Закомментировав

Match Group administrators
AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys
это сработало для меня

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

сделайте эти строки закомментированными

Ответ или решение

Для решения проблемы с аутентификацией доменного пользователя при подключении через SSH к Windows 10, необходимо выполнить несколько шагов. Обратите внимание на следующие аспекты настройки:

1. Проверка команды подключения

На клиентской стороне убедитесь, что вы используете правильный синтаксис команды SSH. Ваша команда должна выглядеть следующим образом:

ssh -i ~/.ssh/id_rsa domain\\user@ip_address

Обратите внимание на двойной обратный слеш (\\) между названием домена и именем пользователя. Это может помочь избежать ошибок, связанных с интерпретацией символов.

2. Настройка конфигурации SSH сервера

Проверьте файл конфигурации sshd_config, который находится в %programData%/ssh/ на сервере Windows. Основные настройки для поддержки аутентификации по ключу:

PubkeyAuthentication yes
PasswordAuthentication no

Как вы указали, эти настройки уже установлены.

3. Директорий и права доступа к файлам

Проверьте права доступа к файлу authorized_keys, находящемуся в C:\Users\user\.ssh\. Убедитесь, что права настроены корректно:

C:\Users\user\\.ssh\authorized_keys NT AUTHORITY\SYSTEM:(I)(F)
                      BUILTIN\Administrators:(I)(F)
                      DOMAIN\user:(I)(F)

Если права доступа выглядят правильно, убедитесь, что файл authorized_keys действительно содержит ваш публичный ключ.

4. Удаление ненужной конфигурации

Если у вас возникли ошибки, связанные с группами, вы можете закомментировать секцию Match Group administrators в вашем sshd_config, так как это может создавать конфликт при аутентификации:

#Match Group administrators
#    AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

После внесения изменений не забудьте перезапустить службу SSH для применения настроек:

Restart-Service sshd

5. Логи и диагностика

Включите более подробное логирование в вашем sshd_config, установив:

LogLevel DEBUG

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

6. Проверка доменной аутентификации

Убедитесь, что ваша машина зарегистрирована в домене и что у вас есть необходимые права для входа через SSH от доменного имени. Используйте команду whoami на сервере, чтобы проверить вашу текущую учетную запись.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...