Siempre me deprimió la conexión a las máquinas con Windows. No, no soy oponente ni partidario de Microsoft y sus productos. Cada producto existe para su propósito, pero no se trata de eso.
Siempre me ha resultado dolorosamente doloroso conectarme a los servidores de Windows, porque estas conexiones están configuradas a través de un solo lugar (hola WinRM con HTTPS) o no funcionan de manera muy estable (hola RDP para máquinas virtuales en el extranjero).
Por lo tanto, accidentalmente me topé con un proyecto
Win32-OpenSSH , decidí compartir la experiencia de configuración. Quizás alguien esta herramienta salve un montón de nervios.

Opciones de instalacion:
- Manualmente
- Via Paquete Chocolatey
- Vía Ansible, por ejemplo, rol jborean93.win_openssh
A continuación, hablaré sobre el primer punto, como con el resto, y así todo está más o menos claro.
Observo que este proyecto todavía está en beta, por lo que no se recomienda su uso en producción.
Entonces, descargue la última versión, actualmente es
7.9.0.0p1-beta . Hay versiones para sistemas de 32 y 64 bits.
Descomprimir en
C: \ Archivos de programa \ OpenSSHMomento obligatorio para el trabajo correcto: solo
SYSTEM y el grupo de administración deben tener permisos de escritura en este directorio.
Instale servicios con el
script install-sshd.ps1 ubicado en este directorio
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
Permitir conexiones entrantes al puerto 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Aclaración: el
applet New-NetFirewallRule se usa en Windows Server 2012 y versiones posteriores. En los sistemas más antiguos (o escritorio), puede usar el comando:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Iniciamos el servicio:
net start sshd
Al inicio, las claves de host (si faltan) se generarán automáticamente en
% programdata% \ sshInicio automático del servicio al inicio del sistema que podemos habilitar con el comando:
Set-Service sshd -StartupType Automatic
Además, puede cambiar el shell predeterminado (después de la instalación, el valor predeterminado es
cmd ):
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Especificación: se debe especificar una ruta absoluta.
Que sigue
Y luego configure
sshd_config , que
colocaremos en
C: \ ProgramData \ ssh . Por ejemplo:
PasswordAuthentication no PubkeyAuthentication yes
Y cree el directorio
.ssh en la carpeta del usuario, y en él el archivo
autorizado_claves . Escribimos claves públicas allí.
Una aclaración importante: solo el usuario en cuyo directorio se encuentra el archivo debe tener permisos de escritura en este archivo.
Pero si tiene problemas con esto, siempre puede desactivar la verificación de derechos en la configuración:
StrictModes no
Por cierto, en
C: \ Archivos de programa \ OpenSSH hay 2 scripts (
FixHostFilePermissions.ps1 ,
FixUserFilePermissions.ps1 ), que deberían
pero no están obligados a corregir los derechos, incluso con
autorizadas_keys , pero por alguna razón no se corregirán.
Recuerde reiniciar el servicio
sshd luego de aplicar los cambios.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Administrator> Get-Host Name : ConsoleHost Version : 5.1.14393.2791 InstanceId : 653210bd-6f58-445e-80a0-66f66666f6f6 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : en-US CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Users\Administrator>
Pros / contras subjetivos.
Pros:
- Un enfoque estándar para conectarse a los servidores.
Cuando hay pocas máquinas con Windows, es muy inconveniente cuando:
Entonces, aquí vamos por ssh, y aquí rdp,
y, en general, las mejores prácticas con bastiones, primero un túnel ssh y, a través de él, RDP. - Configuración fácil
Creo que esto es obvio. - Velocidad de conexión y trabajo con una máquina remota.
No hay un shell gráfico; se guardan tanto los recursos del servidor como la cantidad de datos transmitidos.
Contras:
- No reemplaza RDP por completo.
No todo se puede hacer desde la consola, por desgracia. Me refiero a situaciones en las que se requiere una GUI.
Materiales utilizados en el artículo:
Enlace al proyecto en síOpciones de instalación copiadas descaradamente de
documentos de Ansible .