У меня есть хорошая 8-ядерная машина с Windows 7, на которой я развернул несколько виртуальных машин в VMWare Workstation. Я хочу иметь возможность запускать виртуальную машину удаленно, выполнив что-то вроде «vmrun -T ws H:\VMWare\VM1\VM1.vmx nogui». Я могу предположить, что на хосте всегда есть пользователь, вошедший в систему, и он всегда один и тот же.

Команда работает нормально локально, но проблема в том, когда я пытаюсь запустить ее удаленно.

Сделать это с помощью Cygwin's ssh невозможно, потому что каким-то образом vmrun необходим доступ к локальному экрану, что, насколько мне известно, невозможно в cygwin ssh, так как он работает как служба Windows. Я знаю, что мог бы написать пару приложений, чтобы обойти проблему, одно запущено при входе пользователя в систему, а другое - удаленным пользователем, который отправляет команды первому через IPC. У меня сильное чувство, что кто-то уже написал такое приложение, поэтому мне не нужно тратить время на то, чтобы заново изобретать колесо.

Я не думаю, что другие способы коммуникации, основанные на учетных данных Windows, достаточно безопасны, поэтому я предпочитаю не использовать такие инструменты, как psexec, которые можно легко перехватить и расшифровать с помощью радужных таблиц (у меня нет сервера радиуса). А может я ошибаюсь и они действительно в безопасности?

3 ответа3

0

Я делаю именно это все время, используя Cygwin ssh для переноса на 3389. Затем вы можете включить RDP на свою рабочую станцию (которая находится через туннель ssh, что должно уменьшить ваши опасения по поводу учетных данных Windows), запустить рабочую станцию виртуальной машины, запустить необходимые виртуальные машины и выйти из системы.

0

Вы можете легко выполнить команду удаленно, используя PsExec. Конечно, он опирается на механизмы проверки подлинности Windows для работы.

0

Наконец я нашел решение, которое подходит мне лучше всего:

Смысл в том, чтобы не запускать sshd как службу Windows, а из личного запуска пользователя (возможно, как скрытое окно). Это все. Единственный трюк в том, что мне нужно запустить его как повышенный процесс.

Для интерактивного запуска cygwin sshd в Windows 7 необходимо выполнить следующие действия. (Я предполагаю, что cygwin установлен в C:\cygwin и содержит пакет openssh ):

  1. Установите службу sshd в апплете Администрирование \ службы на "Запуск вручную" или "Отключено"
  2. Стать владельцем C:\cygwin\var\empty
  3. (необязательно - для отладки) Убедитесь, что когда вы запускаете /usr/bin/sshd -D в режиме повышенной привилегии cygwin, вы получаете доступ по ssh к вашему хосту.
  4. (необязательно - для отладки) Убедитесь, что при запуске C:\cygwin\bin\run -p C:\cygwin\bin /usr/sbin/sshd -D из командной строки с повышенными привилегиями вы по-прежнему получаете тот же доступ, что и в пункте 3 , Не забудьте впоследствии завершить процесс sshd.exe с помощью диспетчера задач.
  5. Создайте новую задачу, которая запускает эту команду с повышенными правами доступа сразу после входа в систему. Посмотрите эту ветку форума, чтобы увидеть, как это сделать
  6. Войдите в систему с помощью ssh с удаленного хоста и запустите команду vmrun -T ws start ... как если бы вы делали это локально, и все работает как положено.

Я надеюсь, что это поможет тем из вас, кто предпочитает использовать ssh-авторизацию для выполнения административных задач.

Пожалуйста, обратите внимание, что для того, чтобы это работало, пользователю необходимо войти в систему на хосте (я считаю, что лучше сделать это в интерактивном режиме (т.е. не через rdp), но я не проверял эту теорию), поэтому это решение лучше всего подходит для дома. / небольшая офисная сеть, и, возможно, она не подходит для выделенного сервера, если вы не сконфигурируете ее с "autologon" (но у autologon есть собственные проблемы с безопасностью, которые могут легко компенсировать преимущества отключения $ ADMIN share)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .