Я создал учетную запись службы для запланированной задачи на нашем сервере 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
для обеих учетных записей путь к ключам хоста должен быть одинаковым.