- Вопрос или проблема
- Детали
- На стороне сервера (Windows 10):
- На стороне клиента (Ubuntu 20.04.3):
- Ответ или решение
- 1. Проверка команды подключения
- 2. Настройка конфигурации SSH сервера
- 3. Директорий и права доступа к файлам
- 4. Удаление ненужной конфигурации
- 5. Логи и диагностика
- 6. Проверка доменной аутентификации
- Заключение
Вопрос или проблема
Я пытаюсь настроить свою машину с 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\usersshd: 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
на сервере, чтобы проверить вашу текущую учетную запись.
Заключение
После выполнения всех шагов и проверки всех параметров, попробуйте снова подключиться. Если ошибка сохраняется, проверьте логи на наличие новых сообщений об ошибках, которые могут указать на причину проблемы. При необходимости обращайтесь за помощью к системному администратору домена для диагностики дополнительных проблем с доменной аутентификацией.