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.
0 comentarios:
Publicar un comentario