Вопрос или проблема
Некоторый прогресс:
Это работает для любой учетной записи, с которой начались услуги. То есть, если мы вводим данные для входа для определенной учетной записи на вкладке Входа в службу, тогда это работает для этой учетной записи и так далее. То же самое касается Windows Remote Management. Но все работает нормально через RDP.
Некоторый прогресс
Я установил службу SSHD с пользователем с правами администратора cyg_server. Когда я вхожу по ssh в эту учетную запись, диспетчер учетных данных работает нормально. Но когда я вхожу с другими пользователями, это не работает.
Оригинальный вопрос
Я также наблюдал, что любые программы, сохраняющие ключи в диспетчере учетных данных Windows, выдают мне ошибку Указанная сессия входа не существует. Она, возможно, уже была завершена.
(Только при запуске через ssh)
Хотя в интернете есть некоторые подсказки относительно проблемы, мне не удалось точно найти корневую проблему.
Редактировать: Дополнительная информация
Программа, которую я написал, в конечном итоге вызывает функцию CredWriteW
из Win API.
Не могли бы вы помочь?
Выполните ssh -vv
и посмотрите, какие файлы идентичности используются. Боюсь, что проблемы связаны с файлами идентичности, расположенными в C:\Users\user\.ssh\
и cygwin's home\user\.ssh\
. Скопируйте из одного в другой, чтобы это заработало.
Ответ или решение
Ошибка: «Указанная сессия входа не существует. Она могла быть уже завершена» в Cygwin
Общее введение
Ошибка, с которой вы столкнулись, может вызывать недоумение и затруднения, особенно в контексте работы с Cygwin и взаимодействия с менеджером учетных данных Windows (Windows Credential Manager). Давайте разберем этот вопрос более детально.
Суть проблемы
Когда вы запускаете службы или программное обеспечение под определенным пользователем через SSH, вы можете столкнуться с ошибками доступа к учетным данным. Это может проявляться в виде сообщения об ошибке:
A specified logon session does not exist. It may already have been terminated.
Эта проблема зачастую связана с тем, как Windows и Cygwin взаимодействуют, особенно если службы или консольные приложения вызывают функции WinAPI, такие как CredWriteW
, для работы с учетными данными.
Причины возникновения ошибки
-
Контекст пользователя: При SSH инициализируется новая сессия, во время которой контекст пользователя, возможно, не был корректно установлен. Когда идет попытка доступа к Windows Credential Manager, программа может не иметь необходимых прав или не находить соответствующий логон-сессии.
-
Проблемы с правами доступа: Убедитесь, что пользователи, под которыми вы пытаетесь запустить команды или службы, имеют необходимые права для взаимодействия с Credential Manager.
-
Конфликты с идентификационными файлами: Как подсказано в комментарии, существует вероятность, что идентификационные файлы SSH, расположенные в
C:\Users\user\.ssh\
иcygwin\home\user\.ssh\
, могут конфликтовать. Убедитесь, что копируете и синхронизируете соответствующие файлы SSH. -
Правила групповых политик: Иногда административные настройки и политики безопасности могут блокировать доступ к определенным ресурсам. Проверьте локальные политики безопасности на наличие ограничений для ваших пользователей.
Решение проблемы
-
Проверьте и измените настройки Cygwin и сервиса SSHD, чтобы удостовериться, что они корректно используют учетные данные.
-
Удостоверьтесь, что при запуске SSHD вы используете правильные учетные данные пользователя с необходимыми правами. Это можно настроить в вкладке «Log On» службы.
-
Используйте команду
ssh -vv
, чтобы получить детализированную отладочную информацию о процессе соединения и идентификационных файлах. Это позволит более точно определить, где может быть проблема. -
Переместите или дублируйте файлы SSH из одного каталога в другой, при необходимости синхронизируя их, чтобы устранить возможные конфликты.
-
Обратите внимание на API вызовы в вашем коде. Убедитесь, что вы правильно обрабатываете все возможные ошибки, связанные с
CredWriteW
, и используете их вывод для отладки.
Заключение
Ошибка «Указанная сессия входа не существует» может быть довольно сложной и вызвана множеством взаимодействующих факторов. Внимательное изучение конфигурации вашей системы, контекста пользователя и использования идентификационных файлов SSH может существенно помочь в решении проблемы. Если после выполнения всех вышеперечисленных шагов проблема остается, рекомендуется рассмотреть возможность обращения к сообществу или профессиональным службам поддержки для более глубокой диагностики.