У меня есть Windows Server 2003, и он использует psftp
для подключения к удаленной машине с Linux и загрузки файлов каждый час.
У меня две основные проблемы с этой машиной:
Первый
Запланированные задачи в настоящее время настроены на запуск от имени пользователя в этом поле, что, как я считаю требует сохранение пароля пользователя в планировщике задач. Однако при изменении пароля пользователя задача не запускается. Я бы хотел, чтобы эта задача всегда выполнялась независимо.
SYSTEM
. Это правильно? Если да, то как мне это настроить? Просто введите SYSTEM
в поле «Запуск от имени»? И мне нужно установить пароль для SYSTEM
потому что я считаю, что пытался без пароля, и он сказал, что задание не было выполнено из-за неправильного пароля. Возможно, я делаю это неправильно.Второй
Putty требует, чтобы удаленный ключ для сервера хранился в реестре для проверки подлинности сервера. Однако, похоже, это сохраняется для каждого пользователя, поэтому, если я переключаю скрипт на запуск от имени другого пользователя, кажется, что пользователь должен запустить скрипт в интерактивном режиме в первый раз, чтобы ключ сохранялся в реестре.
В инструкциях на веб-сайте putty упоминается, что ключи должны быть добавлены в следующую папку реестра:
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
Но, судя по "HKEY_CURRENT_USER", не думаю, что это будет для SYSTEM
пользователь. Если я настрою эту задачу для запуска как SYSTEM
, как я могу убедиться, что соответствующий ключ сохранен в реестре для хоста? Я не против добавить его вручную (есть perl-скрипт для преобразования файла known_hosts), но куда он должен идти?
пс: myscript.bat
просто использует psftp.exe для извлечения файлов с удаленного сервера. Ничего особенного. Нет флага, позволяющего пропустить проверку авторизованных хостов, и люди в putty упоминают, что это в любом случае было бы плохой идеей.
Я считаю, что решение первой проблемы - запустить запланированную задачу как SYSTEM. Это правильно?
Как правило, вы должны запускать что-то как SYSTEM только в том случае, если ему действительно нужен этот абсолютный уровень привилегий. Гораздо лучшим выбором может быть настройка учетной записи службы только для этой задачи. Затем вы можете отключить истечение срока действия пароля для учетной записи или настроить расписание уведомлений, чтобы напомнить вам об обновлении пароля учетной записи службы и сведений о задаче.
Вы, конечно, можете временно войти в эту сервисную учетную запись, чтобы принять ключ SSH в первый раз.
Использовать pscp.exe -batch -load PROFILE
в командной строке. Настройте профиль для вашего подключения, используя пару ключей ssh для этого профиля, а затем используйте этот профиль.
Учетная запись пользователя, которую вы используете для этого, должна быть локальной, но не требует каких-либо особых привилегий (просто считайте ключ и пишите файлы).
Пытаться pscp -h
для всех командных переключателей.
Я понимаю, что на этот вопрос уже есть принятый ответ, но я подумал, что добавлю ответ о том, где находится куст реестра пользователей учетной записи SYSTEM. Это на самом деле в HKEY_USERS\.DEFAULT
который большинство людей ошибочно полагают, является пользовательским кустом по умолчанию для вновь созданных учетных записей. Более подробная информация об истории и предыстории ключа находится в блоге Рэймонда Чена MSDN здесь:
Пользователь .Default не является пользователем по умолчанию
Я знаю, что это старый пост, но я помещаю его здесь, чтобы помочь другим пользователям решить ту же проблему.
В наборе утилит putty (plink, pscp, psftp и т. Д.) Есть опция -hostkey. Это позволяет вам включать ключ хоста целевого сервера без необходимости копировать regkeys в другие учетные записи (например, SYSTEM).
pscp.exe /? покажет вам правильный синтаксис.
-hostkey xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx
Вы можете получить ключ хоста, запустив сеанс замазки с целевым сервером один раз под учетной записью обычного пользователя.
В командной строке это будет выглядеть примерно так:
The server's rsa2 key fingerprint is:
ssh-rsa 2048 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a
использование:
pscp.exe -hostkey 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a -batch -i your-private-key.ppk C:\source.file user@10.10.10.10:/var/www/html/
Это работает, когда запускается как запланированная задача, запущенная от учетной записи SYSTEM.
Надеюсь, это кому-то поможет.
Я бы не стал использовать такую систему. Я бы просто создал нового пользователя с именем puttyservice, установил его, чтобы он никогда не истекал, и вперед. Очевидно, вы бы использовали этот новый профиль пользователя.
Я бы также подумал об установке более надежного решения, например Cygwin и используйте версию ssh OpenSSH вместо putty. Это стандартная версия для каждой системы Linux, которая может быть более надежной и простой в работе, чем putty. Конечно, вы потеряете графический интерфейс, но с точки зрения сценариев это не имеет значения.