Instalar OpenSSH en Windows 2016

 Hola amig@s,

Si por un casual tenemos que instalar un servidor sftp en Windows 2016-19 que necesite validación con clave pública y privada,

no necesitaremos comprar ningún software, puede hacerse de manera gratuita con las herramientas que hay en la red. 

A continuación os dejo un paso a paso.

1-Descargarse el runtime desde https://github.com/PowerShell/Win32-OpenSSH/releases

Ya sea de 32 o 64.

2-Descomprimir el fichero y renombrar la carpeta como OpenSSH.

3-Copiar la carpeta OpenSSH a c:\program files (en caso de que sea la version de 64bits).

4-Abrir un cmd y cambiarse al directorio c:\program files\openssh

5-Ejecutar el script install-sshd.ps1 como:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Luego abrimos un powershell desde el cmd para los siguientes comandos:

Powershell

6-Habilitar el puerto 22 en el firewall

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

7-Arrancar el servidor sshd.

net start sshd

8-Establecer en servidor sshd como automático en los servicios.

Set-Service sshd -StartupType Automatic

9-Crearemos un usuario de conexion

new-localuser -name sftpuser

Introduciremos una contraseña.

10-Abriremos un CMD con el nuevo usuario:

runas.exe /user:sftpuser cmd.exe

11-Nos cambiaremos al directorio del usuario recién creado:

cd %userprofile%

12-Crearemos un directorio llamado .ssh y accederemos a el:

mkdir .ssh

cd .ssh

13-Ahora crearemos la clave pública y privada para ese usuario con el comando:

"c:\program files\openssh\ssh-keygen.exe"

Introduciremos una contraseña cuando la pida y este comando generará los ficheros de clave publica y privada.

Ahora copiaremos el fichero idrsa_pub como authorized_keys

copy idrsa_pub authorized_keys

14-Ahora crearemos una carpeta donde se almacenará la información del sftp.

mkdir c:\pdf

15-Desde la consola de administración, nos cambiaremos al directorio c:\programdata\ssh y editaremos el fichero sshd_config cambiaremos las siguientes líneas:

# Logging

SyslogFacility LOCAL0

LogLevel VERBOSE

PasswordAuthentication no

#Forzamos a que el usuario siempre sea para sftp.

ForceCommand internal-sftp

#Mapeamos la carpeta que se utilizará para almacenar los ficheros en local:

Match user sftpuser

      ChrootDirectory C:\PDF

16-Reiniciaremos el servicio de sshd.

net stop sshd

net start sshd

Con esto ya tendríamos configurado el servicio sftp en Windows 2016.

Para probar la conexión local se puede ejecutar el siguiente comando:

sftp sftpuser@localhost

Cuando pida confirmar la clave, le diremos que si, y luego nos pedirá la clave de acceso (la del usuario de windows que tiene las keys).

Nota: Si por un casual el sftp devuelve el siguiente mensaje:

C:\Users\test\.ssh>sftp sftpuser@localhost

load pubkey "C:\\Users\\test/.ssh/id_rsa": Permission denied

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Permissions for 'C:\\Users\\test/.ssh/id_rsa' are too open.

It is required that your private key files are NOT accessible by others.

This private key will be ignored.

Load key "C:\\Users\\test/.ssh/id_rsa": bad permissions

sftpuser@localhost: Permission denied (publickey,keyboard-interactive).

Connection closed


Se debe a que el fichero id_rsa (el de la clave privada) tiene todos los permisos, y es solo el usuario que tiene las claves

el único autorizado a tenerla, por ese motivo debemos seleccionar el fichero id_rsa, luego botón derecho > propiedades >

seguridad > avanzado y seleccionar desheredar objetos y convertirlos en explícitos. Una vez hecho eso, dejar solo el usuario

que tiene las claves, quitar el resto y a ese usuario darle permisos de control total. Con esto ya se quitará el mensaje.


Espero que les resulte útil.

Salu2.

Share on Google Plus
    Blogger Comment

0 comentarios: