Me está costando trabajo encontrar una solución para extender un marco diseñado para máquinas * nix a Windows. El marco actualmente se ejecuta desde un servidor * nix y ssh's a otros servidores * nix y realiza un montón de comandos diferentes como verificar archivos de registro, sincronizar archivos desde el control de origen, enviar registros de nuevo al control de origen, etc. pegado es cómo conectarse a las máquinas remotas de Windows y acceder a la línea de comando. La conexión también puede provenir de otra máquina Windows, no tiene que comenzar desde una máquina Unix, puede ir de Windows a Windows en lugar de Unix a Windows.
Aquí hay un ejemplo de cómo los comandos se ejecutan actualmente en sistemas unix. Algo como esto está en un bucle que pasa por una lista de nombres de servidores. Necesito obtener algo como esto para ejecutarlo en máquinas con Windows.
ssh ${user}@${server} "cd /app/app_name/logs; <export source control params>; <submit logs to source control>" >> Log.txt
Además, preferiría no usar una herramienta de terceros (mi presupuesto es de aproximadamente $ 0). He revisado PsExec y un par de otros, pero parece que necesita acceso de administrador o tiene que pasar usuarios / pasar en texto plano.
Respuestas:
Utilice Powershell Remoting: https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands
Descaradamente copiado pegado:
fuente
Prueba el tunnellier de Bitvise. Ese es un cliente ssh. También hay un servidor ssh para conectarse a una máquina con Windows. Los dos le permiten hacer conexiones muy seguras junto con cosas más avanzadas como un proxy web o un túnel de puerto.
fuente
Instale el puerto OpenSSH para Windows: es gratuito y proporciona tanto el cliente como el servidor.
fuente
Puede probar psexec, que le proporciona un shell remoto sobre el servicio de archivos compartidos (o como se llame). También hay winexe si desea utilizar Linux como cliente.
fuente
Realmente me gusta la idea de PowerShell, aunque la configuración puede tardar un par de minutos en el servidor y el cliente.
Además de la respuesta completa de Shanteva, que sugiere el uso de PowerShell, también debe consultar Aquí en el sitio web howtogeek sobre cómo habilitar (y permitir) realmente una conexión remota al servidor PowerShell. Se requiere un poco de configuración en la computadora servidor.
Hay dos cosas importantes que debe hacer: (No tengo que mencionar que debe hacer todas las configuraciones 'como administrador', ¿verdad? Simplemente abra PowerShell / cmd 'Como administrador')
En la computadora servidor, abra PowerShell y ejecute:
También hay otra forma de hacerlo. Puede abrir un símbolo del sistema y ejecutar:
Podría haber muchas más configuraciones para cambiar. No hay necesidad por ahora.
Si ambas computadoras están en el mismo 'dominio' (un grupo de computadoras a las que todos tienen diferentes reglas y roles asignados), el procedimiento parece ser simple (no lo he intentado).
PERO, como probablemente desee acceder a su servidor a través de Internet (técnicamente llamada red WAN), existen algunas complicaciones y debe cambiar alguna configuración para permitir la conexión al servidor remoto. En la computadora CLIENTE habilite el servicio WINRM. El procedimiento es similar a lo que hemos hecho para el servidor anterior. Solo ejecuta el comando:
(¡Otra vez digno de mención! Algunas referencias dicen que la computadora cliente y la computadora del servidor deben estar en redes "privadas", o todo no funcionará. Recibo mensajes de error para esto cuando ejecuto el comando anterior pero todo funciona encontrar No estoy seguro de este hecho. Consulte la página web antes mencionada).
Luego, ejecute en la computadora CLIENTE en PowerShell:
Lo que significa que el cliente confiará en todos los servidores (hosts). Finalmente, ejecute esto (en el CLIENTE nuevamente enfatizo):
Estás listo para partir Verifique el resto de la respuesta de Shanteva. En la computadora CLIENTE, ejecute por ejemplo:
Le pedirá una contraseña y se abrirá la consola remota que se ve así:
Luego simplemente ingrese los comandos como lo hace para SSH.
fuente