Наша команда по разработке в настоящее время создает исходный код и развертывает его на целевых устройствах — типичная настройка. В настоящее время мы используем psexec для выдачи команд удаленным хостам (например, для выключения сред, передачи нового кода, загрузки резервных копий сред и т. д.)
Будет ли лучше использовать SSH для этого? Будет ли это более надежным/удобным для пользователя? Может ли кто-нибудь помочь мне понять плюсы/минусы каждого из них?
решение1
Учитывая тот факт, что Windows не поддерживает SSH изначально, вам придется настроить его на всех компьютерах, на которых вы будете выполнять развертывание.
Конечно, вы можете настроить скрипт установки, чтобы автоматизировать этот процесс с помощью скрипта оболочки через psexec :)
Это действительно зависит от вашего варианта использования.
Насколько важна безопасность?
SSH был разработан как замена telnet. Он предоставляет вам оболочку на удаленной машине, как и telnet, но все данные отправляются через защищенный туннель, поэтому если кто-то перехватывает пакеты, все данные будут зашифрованы.
В целом SSH гораздо более универсален. Вы можете настроить пересылку TCP, чтобы другие приложения могли использовать ваш туннель SSH для связи. Примером этого может служить VNC. Обычно удаленный буфер кадров (данные вашего экрана) отправляется по вашей сети в незашифрованном виде. Вы можете легко подключиться к удаленной машине через SSH, а затем использовать туннель SSH для отправки данных экрана безопасным способом.
PSEXEC — отличный инструмент для того, что вы описали выше. Он не требует дополнительной настройки (встроен в Windows).
PSEXEC использует RPC (удалённые вызовы процедур) для связи. Я считаю, что как только «канал связи» установлен, данные шифруются, хотя я не совсем уверен в используемых методах (SSH можно настроить несколькими способами).
Однако если вам нужно предоставить какие-либо учетные данные пользователя, то он отправит их по сети in PLAIN TEXT
. Я думаю, что это может быть записано в выводе команды psexec /?
. Хотя я сейчас не перед окном Windows, чтобы проверить.
Видеть этоСВЯЗЬдля опций есть примечание об этом перед разделом примеров.
Так что, опять же, это действительно зависит от того, что вам нужно сделать. Что касается стабильности. У меня никогда не было проблем со стабильностью с PSEXEC. Я бы не сказал, что стабильность будет причиной рассматривать SSH вместо PSEXEC, если только у вас нет проблем с использованием PSEXEC.
PSEXEC не так настраиваем, как SSH. Если вы не сталкиваетесь с ограничениями PSEXEC, вам, возможно, стоит рассмотреть SSH. Если вы просто копируете новый код и перезагружаете удаленные машины, а не передаете учетные данные через PSEXEC (т. е. запускаете команды через свое текущее имя пользователя на удаленном компьютере), то почему бы не продолжать это делать?
На самом деле, если вам просто нужно выполнить копирование и перезапуск, почему бы просто не использовать cmd.exe
команды типа copy
/ xcopy
/ shutdown
(если это в вашей локальной сети или у вас есть другой маршрут к нему, например, через VPN) вместо PSEXEC?