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

Беспарольный psexec в windows

Я сейчас рассматриваю варианты развертывания. Я использую Jenkins на машине Windows для управления развертыванием на нескольких удаленных серверах Windows.

Развертывание включает выполнение пакетного сценария на удаленных серверах Windows, и пока похоже, что psexec помогает. Единственная проблема, с которой я столкнулся, заключается в том, что мне нужно предоставить psexec мой пароль в виде обычного текста.

Кто-нибудь знает эквивалент открытого / закрытого ключа SSH для psexec или какой-либо другой удаленный вход без пароля для Windows, который позволит мне синхронизировать файлы и выполнять пакетные сценарии?

PAExec имеет немного лучшее решение с параметрами -p @ и -p @ d.

Он позволяет вам записать свой пароль в файл, запустить PAExec, и он немедленно прочитает файл, а затем удалит его. Это все еще не так хорошо, как SSH с открытым / закрытым ключом, но вариант ...

Мне не известно о чем-либо действительно аналогичном аутентификации на основе ключей SSH для Windows. Но вот пара идей:

Из Вот, Я обнаружил, что если вы сначала подключаетесь к общему ресурсу ipc $ удаленного хоста, а затем запускаете psexec, этот psexec автоматически запускается в контексте соединения ipc $.

Итак, в вашем командном файле:

net use \\myserver\IPC$ /user:MyID MyPassword
psexec \\myserver c:\whatever.cmd

Это предотвратит отправку вашего имени пользователя / пароля по сети в открытом виде. Однако при этом ваше имя пользователя и пароль остаются видимыми внутри вашего командного файла.

Один из способов обойти это - написать исполняемую программу, единственной функцией которой является запуск "net use \ [аргумент командной строки] \ IPC $ / user: MyID MyPassword". (Лично я бы использовал что-то вроде autoit для записи .exe.) Допустим, мы назовем его «nu.exe». Тогда ваше секретное имя пользователя / пароль, по крайней мере, встроено в "nu.exe" и, следовательно, не в открытом виде. Хотя, вероятно, можно перепроектировать через декомпилировать это, это, по крайней мере, несколько запутано.

Тогда ваш процесс:

nu.exe myserver
psexec \\myserver c:\whatever.cmd

Но тогда вам нужно хранить nu.exe в безопасном месте, потому что любой, у кого есть доступ к нему, может запускать программы на удаленных хостах с любым идентификатором, который вы встроили в nu.exe.

Так что у обоих вариантов есть недостатки, но, возможно, один из них вам подойдет ...