Existen varias alternativas para manejar un servidor Windows mediante consola de comandos (CLI). Siempre he preferido conectar a los servidores mediante escritorio remoto (RDP) o mediante el uso de Terminal Server o Escritorio remoto, Citrix, VNC, pero los servidores Windows, poseen diversos métodos de conexión mediante comandos similares a los que ofrece GNU/Linux, que es necesario conocer.
Os comentaré de forma breve, cada una de ellas, para que podáis investigar más y tirar del hilo en cada técnica de conexión a utilizar.
WINRS/WINRM
El primero de ellos, no muy conocido es mediante WinRS/WinRM, Shell remoto de Windows.
Puede ser usado lanzando una instancia cmd, en el sistema remoto. Esta herramienta se encuentra incluida en diversos sistemas Windows (VISTA, 8, 10). Se pueden ejecutar comandos especialmente en servidores sin monitor. WINROM es una implementación del protocolo WSManagement de Microsoft, usando SOAP. Para comprender su uso, es necesario pensar que debe estar ejecutándose el servicio en la maquina donde nos queremos conectar y luego emplear un cliente desde el sitio donde deseamos gestionar.
Para comenzar se puede ejecutar winrm quickconfig en línea de comandos.
En el lado del cliente se puede ejecutar winrs -r:servidor cmd
Podemos ver más comandos de conexión en la excelente página de ss64:
https://ss64.com/nt/winrs.html
Mediante PowerShell
El PowerShell es un intérprete de comandos evolucionado algo más potente que el CMD. Por ejemplo en sistemas Windows. La siguiente entrada os mostraré algunas características de este Shell, como activarlo y sacar partido desde Windows 10. Puede actuar de forma similar al SSH para el uso de terminales remotos. Para usarlo de forma remota, es necesario activarlo, puesto que viene desactivado por defecto.
Desde el terminal donde nos queremos conectar, tendremos que ejecutar un powershell como administradores, con el segundo botón del ratón, ejecutar como administrador.
Para activar el servicio es necesario ejecutar lo que se conoce como un cmdlet en powetshell
Enable-PSRemoting –Force
Este comando arranca el servicio WINRM, y crea una regla en el firewall para permitir conexiones entrantes. Las opciones pueden variar si conextamos desde una maquina con dominio o desde un workgroup. Mejor es investigar estos parámetros.
Para conectar desde el cliente, tenemos que ejecutar otro cmdlet
Test-WsMan ordenador-destino
Si el comando se ejecuta correctamente, se mostrará información sobre el servicio remoto en la ventana powershell.
Para ejecutar un comando remoto, a sintaxis es la siguiente:
Invoke-Command -ComputerName ordenador-destino -ScriptBlock { COMMAND } -credential USERNAME
Pedirá el usuario y password.
Remote Desktop
Esta opción es la que generalmente se usa para conectarse mediante RDP o escritorio remoto, pero existe la posibilidad de lanzar un CMD a través de RDP. Mediante lo que se conoce como “Server Core”. Permite a los administradores sólo instalar los mínimos binarios necesarios para su uso. El Server core no tiene un GUI real.
Antes de usarlo, tenemos que configurar una Ip, el nombre del servidor, su password y el firewall.
En el servidor donde se encuentra la instalación Server Core, tecleamos
cscript C:\Windows\System32\Scregedit.wsf /ar 0
Esto activa el escritorio remoto en modo administrador para aceptar conexiones. Para ver el estado actual puedes teclear:
cscript C:\Windows\System32\Scregedit.wsf /ar /v
Si muestra un 1, en la salida del script, significa que las conexiones RPD se encuentran denegadas. Un 0 significa que son posibles.
Este otro comando
netsh advfirewall firewall set rule group=”Remote Desktop” new enable=yes
Activa el RDP para conexiones a través del cortafuegos.
Para abrir una sesión RDP, desde el ordenador remoto, tecleamos
Mstsc, y escribimos el nombre de la máquina que ejecuta el Server Core
Una vez realizado esto, al entrar como administradores, aparecerá un cmd para gestionar el equipo mediante línea de comandos.
Instalación de SSH en Windows Server.
Probablemente sea la opción más empleada por los sysadmins en otros sistemas (*nix, BSD, Gnu/Linux). Para ello tendremos que instalar un OpenSSH en nuestro servidor Windows.
Puedes descargar OpenSSH desde aquí, y procura tener en cuenta el firewall. Para permitir conexiones SSH a través del cortafuegos.
netsh firewall set portopening TCP 22 “OpenSSH TCP22”
Como has podido observar, en casi todos los métodos de conexión ha sido necesario configurar reglas de acceso sobre el cortafuegos.
Es necesario configurar ciertos servicios como las DNS, DHCP y el SNMP.
Para configurar al detalle el ssh os dejo este enlace, parece que funciona correctamente sobre Windows 2012 server:
Puedes conectar por ejemplo con un cliente gratuito como Putty (yo le empleo bastante en sistemas GNU/Linux).
Ejecución de PSExec
La opción de conectarse mediante ejecución de comandos remota o CLI, partió inicialmente de una suite excelente para los administradores de sistemas que formaba parte de la suite Systernals.
https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Era una software en su momento que todos los administradores usaban como herramienta imprescindible, tanto fue así que fue adquirida por Microsoft, y es una utilidad oficialmente soportada por Microsoft. Junto WinRS /RM, PSExec puede usarse para lanzar comandos remotos a un servidor o lanzar instancia cmd a una maquina remota.
Ejemplo: psexec \\miservidor.com cmd
Como las anteriores opciones, existen una serie de pasos que primero es necesario realizar para asegurarse que PSExec es capaz de conectar a la maquina destino.
http://www.gabohome.com/blog/pstools-administracion-remota-en-consola-de-comandos-%E2%80%93-consola-remota/?i=1
Mediante el Servidor Telnet
Finalizando, os dejo este otro mecanismo, que es soportado por el sistema operativo Windows. No suele ser muy seguro en sus comunicaciones por cuestiones de cifrado. Pero esto pasa en todos los sistemas.
No obstante a través del mecanismo de autenticación NTLM , a diferencia de otros telnets, se puede evitar el envió de credenciales no cifradas en las validaciones.
Os dejo el enlace para su configuración con este tipo de autenticación. Funciona también bastante bien.
https://technet.microsoft.com/en-us/library/bccaae42-0e1a-4100-a6bc-0690ce69fcfa