Вопрос или проблема
Я настроил 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]
Мои вопросы:
- Какого пользователя мне следует использовать для подключения?
- Что я должен сделать, чтобы
cygsshd
принял мою попытку подключения? - Почему я получаю эти ошибки, вместо того чтобы аутентификация просто прошла успешно?
Ответ или решение
После настройки сервера 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 для устранения неполадок или задать вопросы на форумах поддержки.