Putty не будет кэшировать ключи для доступа к серверу при запуске скрипта через ControlM

Проблема. Всякий раз, когда пакетный файл Windows (содержащий команду для выполнения PSFTP) запускается с помощью Control-M (службы запущены как LocalServiceAccount), ключи не кэшируются и каждый раз предлагается сохранить ключ.

Объяснение: мы выполняем передачу файлов с помощью psftp.exe (Putty). Когда я запускаю пакетный файл, используя свою учетную запись, я могу снимать отпечатки и видеть, как обновляются ключи в реестре (под HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys)

Попытка № 1. Создал задачу в TaskScheduler для запуска той же команды (через пакетный файл) с пользователем, что и LocalServiceAccount, и выполнения снятия отпечатков пальцев, добавив ECHO "Y" | перед командой psftp, чтобы она не t запрашивать подтверждение. Это работает, но годится только для целей тестирования, так как я не думаю, что это хорошая практика, когда мы переходим к производству.

Усилие 2. Удалил все ключи и вручную добавил их в реестр. Это все еще не работает для LocalServiceAccount, это работает только для моей учетной записи. Отпечатки пальцев не выполняются для LocalServiceAccount.

Команда PsfTP:

whoami
"C:\Program Files (x86)\PuTTY\psftp" userAccount@HostIPAddreess -i E:\keys\transfer.ppk

(добавлено whoami только для подтверждения правильности пользователя.)

Однако не имеет значения, запускается ли пакетный файл через службы Control-M (запущенные как LocalServiceAccount) или мы запускаем его через планировщик заданий. В обоих случаях ключи не кэшируются.

Аналогичный вопрос: благодаря этому сообщению я получил временное решение для добавления echo "Y": Putty не будет кэшировать ключи для доступа к серверу при запуске скрипта в hudson

LocalServiceAccount является частью группы администраторов на сервере, поэтому я не уверен, есть ли какие-либо разрешения для учетной записи, вызывающие проблему.

Любые предложения о том, что еще я должен искать, приветствуются.


person User M    schedule 15.03.2018    source источник
comment
Не используйте echo Y, это небезопасно! Используйте переключатель -hostkey, как вы можете видеть в другом ответе на этот вопрос.   -  person Martin Prikryl    schedule 15.03.2018
comment
Это совсем другая проблема, которая не имеет ничего общего с ключами хоста. Вы можете прочитать мою статью Понимание пар ключей SSH   -  person Martin Prikryl    schedule 16.03.2018
comment
Я пробовал -hostkey, но он продолжает запрашивать пароль (а у меня его нет). У меня только пк. Возможно, что-то не так с синтаксисом. plink -ssh userAccount@ServerIP -i key.ppk, а также plink -ssh userAccount@ServerIP key.ppk Я знаю, что делаю что-то не так... Спасибо, @Martin Prilkryl, я проверю ту ссылку, которой вы поделились.   -  person User M    schedule 16.03.2018
comment
Ошибся на основном этапе... ключи, которые хранятся в реестре под HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys, были теми, которые я добавил для своего идентификатора. ServiceAccount находился в другой папке HKEYUSERS\s-1-5....\SOFTWARE\SimonTatham\PuTTY\SshHostKeys. Итак, Усилие №2 было неверным. Добавил строковый ключ и все заработало. Не нужно было перезапускать сервер, так как модификация была сделана с помощью опции «Подключить сетевой реестр» — не знал об этом, поэтому решил поделиться ею   -  person User M    schedule 16.03.2018


Ответы (1)


Учетная запись LocalService не распознается подсистемой безопасности. Он имеет очень ограниченные привилегии и представляет себя анонимным пользователем для сетевых подсистем. Я бы не рекомендовал разрешать какой-либо нестандартный доступ к учетной записи LocalService. См. документы MSDN.

person jwdonahue    schedule 16.03.2018
comment
Спасибо @jwonahue, это понятно, почему снятие отпечатков пальцев не происходит для этого пользователя, но происходит для других пользователей. - person User M; 19.03.2018