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

Запись HKEY_USERS для служебного аккаунта

Я создал учетную запись службы для запланированной задачи на нашем сервере 2008R2. Задача запускает сценарий PowerShell, который, среди прочего, загружает архив с сервера Linux каждый раз, когда он запускается с использованием PSCP PuTTY.

Однако это не работает, поскольку учетная запись службы никогда раньше не подключалась к этому серверу и не знает его ключ хоста. При чтении руководства и поиске выясняется, что эти ключи хранятся в реестре под HKEY_USERS\<SID>\Software\SimonTatham\PuTTY\SshHostKeys.

Но вот проблема: поскольку локальный вход в систему не разрешен, учетная запись службы не имеет локального профиля, поэтому у нее нет записи в HKEY_USERS.

Как это исправить? Я сомневаюсь, что было бы неплохо просто создать SID ключ под HKEY_USERS, но должен быть какой-то обходной путь? Могу ли я поместить это в какой-нибудь пользовательский ключ по умолчанию?

В идеале, прямая поддержка в PuTTY опции командной строки для «предварительного принятия» ключа хоста или полного отключения проверки ключа хоста была бы самым простым решением. Тем не мение, не похоже, что эта функция будет здесь в ближайшее время.

Однако у вас уже запущен сценарий PowerShell, который должен иметь возможность записи в собственный куст реестра HKEY_CURRENT_USER. И я предполагаю, что ключ хоста вашего Linux-сервера не так часто меняется. Так почему бы просто не заставить сценарий PowerShell записать соответствующее значение в реестр до того, как он начнет выполнять вызовы pscp?

Set-ItemProperty "hkcu:\Software\SimonTatham\PuTTY\SshHostKeys" "{name}" "{value}"

Вы найдете {имя} и {значение} из сеанса другого пользователя, который уже принял ключ. HKEY_USERS\<SID> совпадает с корнем HKEY_CURRENT_USER для пользователя, который соответствует этому SID. Итак, пока вы ссылаетесь HKEY_CURRENT_USER для обеих учетных записей путь к ключам хоста должен быть одинаковым.