Назад | Перейти на главную страницу

cygwin sshd не может выделить pty для некоторых пользователей

У меня (наконец-то) есть sshd, работающий под cygwin на Win7 - ну, вроде того.

Sshd запускается от имени пользователя cyg_server. Я могу успешно подключиться к моему компьютеру по ssh, используя то же имя пользователя.

Однако, если я попытаюсь использовать ssh, используя свое обычное имя пользователя (Windows), мне не удастся выделить pty для моего сеанса входа в систему. Например, вывод 'sshd -D -d -d -d' содержит это

debug1: Entering interactive session for SSH2.
debug2: fd 4 setting O_NONBLOCK
debug2: fd 5 setting O_NONBLOCK
debug1: server_init_dispatch_20
debug1: server_input_channel_open: ctype session rchan 0 win 1048576 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug2: session_new: allocate (allocated 0 max 10)
debug3: session_unused: session id 0 unused
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0
debug1: server_input_channel_req: channel 0 request pty-req reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req pty-req
debug1: Allocating pty.
debug1: session_pty_req: session 0 alloc /dev/pty1

!!! chown(/dev/pty1, 17308, 10513) failed: Invalid argument

debug1: do_cleanup
debug1: session_pty_cleanup: session 0 release /dev/pty1

В настоящее время / dev принадлежит моей обычной учетной записи. Я пробовал сменить владельца на cyg_server, а также на SYSTEM. В обоих случаях проблема сохраняется. Я также изменил разрешения для / dev (например, 700 и 777) - снова проблема не устранена.

[В качестве примечания - странно, что всякий раз, когда я выполняю 'ls -al / dev', ptys не отображаются. Однако, если я использую ls -l / dev / ptyX для pty, о существовании которого я знаю, он появляется. Это нормально для cygwin?]

У меня возникла странная проблема после клонирования исходной виртуальной машины Windows, сначала выполнив sysprep -
"который изменяет SID машины => SID всех локальных пользователей, но / etc / password, конечно, не изменился. Это привело к сбою авторизации pubkey с ошибкой sshd: fatal: chown (/ dev / pty1): Permission denied" сообщения в журнале событий приложений Win.

TL; DR Запуск консоли Cygwin с повышенными правами (от имени администратора), net stop sshd, выполнение 'mkpasswd -l' и замена всей информации локальных учетных записей в / etc / passwd из его вывода, затем удаление / etc / ssh *, ssh-host-config, net start sshd был для меня исправлением.

Удаление всех файлов / etc / ssh * и повторный запуск ssh-host-config в окне cygwin, открытом, поскольку администратор решил проблему для меня, я полагаю, исправив разрешения.

Мне пришлось много проверять и исправлять, прежде чем я смог заставить это работать:

  • В /etc/ssh* ключевые файлы принадлежат, доступны для чтения и записи привилегированной учетной записи сервера (например, cyg_server)
  • /dev является владельцем моей (администратора) учетной записи пользователя и может быть загружен администраторами, пользователями и пользователем sshd
  • Сервис был перезапущен
  • Вы установили переменные среды CYGWIN=ntsec