¿Cómo iniciar máquinas VMWare o cualquier otro programa de forma remota en Windows mediante ssh?

¿Cómo iniciar máquinas VMWare o cualquier otro programa de forma remota en Windows mediante ssh?

Tengo una buena máquina con Windows 7 de 8 núcleos donde implementé varias máquinas virtuales en VMWare Workstation. Quiero poder iniciar la máquina virtual de forma remota, ejecutando algo como "vmrun -T ws H:\VMWare\VM1\VM1.vmx nogui". Puedo suponer que siempre hay un usuario que ha iniciado sesión en el host y siempre es el mismo.

El comando se ejecuta bien localmente, pero el problema surge cuando intento ejecutarlo de forma remota.

Hacer eso con ssh de cygwin es imposible, porque de alguna manera vmrun necesita acceso a la pantalla local, lo cual, hasta donde yo sé, es imposible en ssh de cygwin, ya que se ejecuta como un servicio de Windows. Sé que podría escribir un par de aplicaciones para solucionar el problema, una iniciada cuando el usuario inicia sesión y la otra invocada por un usuario remoto que envía comandos al primero mediante IPC. Tengo la fuerte sensación de que alguien ya ha escrito dicha aplicación, así que no necesito perder el tiempo reinventando la rueda.

No creo que otras formas de comunicación que dependen de las credenciales de Windows sean lo suficientemente seguras, por lo que prefiero no usar herramientas como psexec, que pueden detectarse y descifrarse fácilmente con tablas Rainbow (no tengo un servidor Radius). ¿O tal vez me equivoco y efectivamente son seguros?

Respuesta1

Hago exactamente esto todo el tiempo usando Cygwin sshpara reenviar el puerto a 3389. Luego puede realizar RDP en su estación de trabajo (que está sobre el túnel ssh, por lo que debería disipar sus preocupaciones sobre las credenciales de Windows), iniciar la estación de trabajo VM y jugar y VM que quieras y lárgate.

Respuesta2

Puedes ejecutar comandos de forma remota con bastante facilidad usandoPsExec. Por supuesto, depende de los mecanismos de autenticación de Windows para funcionar.

Respuesta3

Finalmente encontré la solución que más me conviene:

El punto esNo aejecute sshd como un servicio de Windows, pero desde el inicio personal del usuario (posiblemente como una ventana oculta). Eso es todo. El único truco aquí es que necesito ejecutarlo como un proceso elevado.

Para iniciar cygwin sshd de forma interactiva en Windows 7 es necesario seguir estos pasos. (Supongo que cygwin está instalado C:\cygwiny que contiene el opensshpaquete):

  1. Configure el sshdservicio en el subprograma Herramientas administrativas\servicios en "Inicio manual" o "Desactivado".
  2. Tomar posesión de C:\cygwin\var\emptyla carpeta
  3. (opcional - para depuración) Asegúrese de que cuando ejecute /usr/bin/sshd -Dbajo el indicador elevado de cygwin obtenga acceso ssh a su host.
  4. (opcional - para depuración) Asegúrese de que cuando inicie C:\cygwin\bin\run -p C:\cygwin\bin /usr/sbin/sshd -Ddesde el símbolo del sistema elevado todavía obtenga el mismo acceso que en el punto 3. Recuerde finalizar el sshd.exeproceso luego usando el administrador de tareas.
  5. Cree una nueva tarea que inicie este comando con credenciales elevadas justo después de iniciar sesión. Vereste hilo del foro para ver cómo hacer esto
  6. Inicie sesión con ssh desde el host remoto y ejecute el vmrun -T ws start ...comando como lo haría localmente, y todo funcionará como se esperaba.

Espero que ayude a aquellos de ustedes que prefieren seguir con la autorización ssh para realizar tareas administrativas.

Tenga en cuenta que para que funcione, el usuario debe iniciar sesión en el host (creo que es mejor hacerlo de forma interactiva (es decir, no a través de rdp), pero no he probado esta teoría), por lo que esta solución es más adecuada para el hogar. /red de oficina pequeña, y tal vez no sea adecuado para un servidor dedicado, a menos que lo configure con "autologon" (pero el inicio de sesión automático tiene sus propios problemas de seguridad que pueden compensar fácilmente los beneficios de deshabilitar el recurso compartido $ADMIN)

información relacionada