Служба SSH Cygwin отклоняет попытку подключения локального пользователя

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

Я настроил Cygwin на машине с Windows, запустив OpenSSH сервер sshd как службу Windows. Я использовал ssh-host-config -y; и в /etc/sshd_config я раскомментировал: PubkeyAuthentication Yes.

С клиентской стороны – я начинаю с самого простого – с той же машины в Cygwin. Пользователь является пользователем домена Windows, так что назовем его MyDom\JoeUser. Немного дополнительной информации:

MyDom+JoeUser@mymachine ~
$ ls -lad .ssh/*
-rw------- 1 MyDom+JoeUser MyDom+JoeUser 4971 Dec  3 15:40 .ssh/authorized_keys
-rw------- 1 MyDom+JoeUser MyDom+JoeUser  525 Dec  3 13:56 .ssh/id_ecdsa
-rw-r--r-- 1 MyDom+JoeUser MyDom+JoeUser  187 Dec  3 13:56 .ssh/id_ecdsa.pub
-rw------- 1 MyDom+JoeUser MyDom+JoeUser 1675 Dec  3 13:57 .ssh/id_rsa
-rw-r--r-- 1 MyDom+JoeUser MyDom+JoeUser  401 Dec  3 13:57 .ssh/id_rsa.pub
-rw------- 1 MyDom+JoeUser MyDom+JoeUser   91 Dec  3 13:52 .ssh/known_hosts

И я убедился, что в authorized_keys есть строка из id_rsa.pub. Теперь, когда я пытаюсь подключиться, происходит следующее (вырезано несколько менее интересных строк):

$ ssh -v localhost
OpenSSH_9.9p1, OpenSSL 3.0.15 3 Sep 2024
--- snip ---
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Will attempt key: /home/JoeUser/.ssh/id_rsa RSA SHA256:redacted
debug1: Will attempt key: /home/JoeUser/.ssh/id_ecdsa ECDSA SHA256:redacted
debug1: Will attempt key: /home/JoeUser/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/JoeUser/.ssh/id_ed25519
debug1: Will attempt key: /home/JoeUser/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/JoeUser/.ssh/id_xmss
debug1: Offering public key: /home/JoeUser/.ssh/id_rsa RSA SHA256:redacted
Connection closed by ::1 port 22

А если я попробую подключиться, используя просто свое имя пользователя:

$ ssh -v JoeUser@localhost
OpenSSH_9.9p1, OpenSSL 3.0.15 3 Sep 2024
--- snip ---
debug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],rsa-sha2-512,rsa-sha2-256>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Will attempt key: /home/JoeUser/.ssh/id_rsa RSA SHA256:redacted
debug1: Will attempt key: /home/JoeUser/.ssh/id_ecdsa ECDSA SHA256:redacted
debug1: Will attempt key: /home/JoeUser/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/JoeUser/.ssh/id_ed25519
debug1: Will attempt key: /home/JoeUser/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/JoeUser/.ssh/id_xmss
debug1: Offering public key: /home/JoeUser/.ssh/id_rsa RSA SHA256:redacted
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Offering public key: /home/JoeUser/.ssh/id_ecdsa ECDSA SHA256:redacted
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/JoeUser/.ssh/id_ecdsa_sk
debug1: Trying private key: /home/JoeUser/.ssh/id_ed25519
debug1: Trying private key: /home/JoeUser/.ssh/id_ed25519_sk
debug1: Trying private key: /home/JoeUser/.ssh/id_xmss
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
JoeUser@localhost's password:

… но пароль не принимается.

Что касается журнала сервера, вот что я получаю:

Dec  3 16:12:21 mymachine sshd-session: PID 2620: fatal: seteuid 4096: Function not implemented
Dec  3 16:13:39 mymachine sshd-session: PID 2623: Invalid user JoeUser from ::1 port 55645
Dec  3 16:14:45 mymachine sshd-session: PID 2623: Connection closed by invalid user JoeUser ::1 port 55645 [preauth]

Мои вопросы:

  1. Какого пользователя мне следует использовать для подключения?
  2. Что я должен сделать, чтобы cygsshd принял мою попытку подключения?
  3. Почему я получаю эти ошибки, вместо того чтобы аутентификация просто прошла успешно?

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

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

1. Какого пользователя следует использовать для подключения?

В вашем случае, когда вы подключаетесь к серверу OpenSSH, вы должны использовать синтаксис, соответствующий наименованию пользователя на сервере. Для подключения от имени вашего доменного пользователя MyDom\JoeUser в Cygwin будет разумным использовать следующую команду:

ssh 'MyDom\JoeUser'@localhost

Обратите внимание на использование кавычек вокруг доменного имени, чтобы корректно отработало отображение символа обратной косой черты \.

2. Как заставить cygsshd принять мои попытки подключения?

Для успешного подключения к cygsshd, необходимо убедиться в следующем:

  • Настройки конфигурации: В вашем файле конфигурации /etc/sshd_config рекомендуется оставить включенным PubkeyAuthentication Yes, но также вы можете добавить (если еще не добавлены) следующие строки:
PermitRootLogin no
PasswordAuthentication yes
ChallengeResponseAuthentication yes

Обратите внимание, что необходимо также удостовериться, что ваши ключи в .ssh/authorized_keys файл соответствуют запросам на аутентификацию.

  • Права доступа: Убедитесь, что права доступа к файлам и директориям в .ssh настроены правильно. Обычно для папки .ssh следует установить права 700, а для файлов authorized_keys, id_rsa, id_ecdsa — 600. Вы можете установить эти права с помощью следующих команд:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_ecdsa
  • Перезапуск службы: После внесения изменений в конфигурацию убедитесь, что вы перезапустили службу SSH. Это можно сделать с помощью следующей команды в командной строке:
cygrunsrv -S sshd

или, если служба уже запущена:

cygrunsrv -S sshd && cygrunsrv -S sshd

3. Почему я получаю эти ошибки вместо успешной аутентификации?

Среди ошибок, которые вы наблюдаете, есть несколько ключевых моментов:

  • fatal: seteuid 4096: Function not implemented: Эта ошибка может указывать на проблемы с системными вызовами во время выполнения процесса. Cygwin использует специфическую реализацию Unix-подобной среды, и некоторые функции могут ведут себя иначе, чем в традиционной среде Linux.

  • Invalid user JoeUser: Эта ошибка возникает, когда запрашиваемый пользователь не распознается сервером. Убедитесь, что вы правильно указываете имя пользователя при подключении. Как было упомянуто выше, вводите его в формате MyDom\JoeUser.

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

Заключение

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

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

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