Cuando desarrollamos aplicaciones web, lo normal es empezar en un entorno local, ejecutándolas en nuestro propio ordenador. Ahí probamos que el código funciona correctamente, ya sea con un servidor sencillo en Node.js, con Apache/PHP, o con cualquier otra tecnología.
Sin embargo, trabajar solo en local tiene un límite: la aplicación solo está disponible para nosotros. El siguiente paso es llevarla a un entorno real en Internet, donde cualquier persona pueda acceder a través de una dirección IP o un nombre de dominio. Este proceso se conoce como el despliegue o paso a producción.
Hoy en día, el despliegue puede hacerse de distintas formas. En cualquier caso, el despliegue no es solo “subir archivos”: también implica configurar, mantener y asegurar el servidor, y en muchos casos automatizar el proceso con Git y pipelines de integración continua (CI/CD).
En este módulo aprenderemos los pasos básicos para poner en marcha un servidor remoto y desplegar una aplicación web real, partiendo de la opción más versátil y cercana a la realidad profesional: un VPS con Linux y Node.js.
El despliegue en un servidor remoto es el proceso que permite que una aplicación web deje de estar limitada al ordenador del desarrollador (localhost) y pase a ser accesible desde cualquier lugar del mundo.
Antes de poder desplegar, necesitamos preparar algunos elementos básicos:
Servidor o alojamiento público
Debemos disponer de una ubicación en Internet donde instalar la aplicación. Puede ser un servidor compartido, un VPS, un servidor dedicado o incluso un servicio en la nube (AWS, Azure, Vercel, etc.). Una vez contratado, en estos servidores es habitual usar tecnologías modernas como Nginx para servir aplicaciones, o Docker para empaquetarlas y moverlas fácilmente entre entornos.
En este módulo trabajaremos con un VPS, porque combina flexibilidad, bajo coste y un entorno realista de aprendizaje.
Mecanismo de acceso y transferencia de archivos
Para administrar el servidor y subir nuestra aplicación necesitamos algún tipo de conexión remota:
Una vez que tenemos claro dónde vamos a desplegar y cómo nos conectaremos al servidor, podremos comenzar a instalar los servicios necesarios (servidor web, base de datos, etc.) y subir nuestro proyecto.
A la hora de elegir dónde desplegar una aplicación web, existen varias opciones que varían en precio, flexibilidad y nivel de control. En la mayoría de los casos, se recurre a empresas especializadas en alojamiento que se encargan del mantenimiento de la infraestructura, la seguridad y la disponibilidad del servicio, garantizada mediante un acuerdo de nivel de servicio (Service Level Agreement, SLA).
Un servidor dedicado es un equipo físico reservado en exclusiva para una empresa o proyecto. Puede estar en las instalaciones de la propia organización (con su propia IP pública y administración interna), o bien en un centro de datos gestionado por un proveedor.
La gran ventaja de este modelo es que ofrece el máximo rendimiento y seguridad, ya que no se comparten recursos con otros clientes. Sin embargo, su principal inconveniente es el coste elevado, que suele empezar en torno a los 100–110 € al mes para configuraciones modestas y puede superar fácilmente los 150–300 € mensuales en servidores más potentes, además de requerir conocimientos técnicos avanzados para administrarlo correctamente.
Entre los proveedores habituales se encuentran OVHcloud, IONOS o Acens.
El hosting compartido es la opción más sencilla y económica de alojamiento web, pensada para proyectos que requieren pocos recursos. Hablamos de aplicaciones o sitios con pocas bases de datos, escasa necesidad de almacenamiento y bajos requisitos de ancho de banda o conexiones simultáneas.
En este modelo varios clientes comparten un mismo servidor físico, lo que abarata costes pero impone limitaciones claras: el espacio en disco, el ancho de banda y el número de bases de datos disponibles son reducidos, y además suele restringirse el uso de ciertos lenguajes, siendo PHP el más habitual, normalmente acompañado de bases de datos MySQL o MariaDB.
En comparación con los servidores dedicados, este tipo de alojamiento presenta más problemas de seguridad. Al compartir recursos con otros usuarios, si uno de ellos tiene una vulnerabilidad en su sitio web, un atacante podría intentar aprovecharla para acceder a otros sitios dentro del mismo servidor.
En cuanto al precio, los planes más básicos pueden encontrarse hoy desde 1–3 € al mes, mientras que los servicios con mayores recursos y prestaciones suelen situarse en un rango de 5–10 € mensuales, aunque los planes más completos de hosting compartido pueden alcanzar fácilmente los 15–20 € según el proveedor.
Entre los proveedores habituales de este tipo de alojamiento encontramos IONOS, Hostalia o Servage.
Un VPS (Virtual Private Server) es una máquina virtual que simula el funcionamiento de un servidor dedicado, pero que en realidad ocupa una parte de un servidor físico compartido con otros clientes. Cada VPS dispone de su propio sistema operativo, procesadores virtuales, memoria RAM y almacenamiento asignados, lo que da la sensación de tener un servidor completo con gran libertad de configuración, pero con un coste mucho menor que el de un servidor dedicado.
La principal ventaja de esta opción es su equilibrio entre flexibilidad y coste: permite instalar cualquier software que necesitemos y administrar el servidor como si fuera propio, pero sin la elevada inversión de un servidor dedicado. El inconveniente es que, aunque más sencillo que un dedicado, sigue requiriendo conocimientos básicos de administración de sistemas para gestionarlo correctamente.
En cuanto al coste, los planes básicos de VPS en proveedores como OVHcloud pueden encontrarse desde 4–7 € al mes, mientras que configuraciones más potentes con más RAM, CPU y almacenamiento suelen situarse en un rango de 15–30 € mensuales.
Entre los proveedores habituales de este tipo de servicio encontramos OVHcloud, IONOS o Hostalia.
Por su versatilidad, en este tema nos basaremos en la opción del VPS en OVHcloud, aunque los pasos a seguir serían muy similares con cualquier otra empresa de hosting.
En este apartado explicaremos los pasos a seguir para contratar un VPS básico con la empresa OVHcloud, y veremos qué características ofrece este tipo de servicio. Para comenzar, debemos acceder a la web de la empresa. Aunque en el módulo trabajaremos con OVHcloud, los pasos a seguir en otros proveedores son muy similares.
Como vamos a contratar un producto, deberemos registrarnos desde el Área de cliente en la parte superior, eligiendo después la opción de Crear una cuenta. Si ya somos clientes, podemos loguearnos desde esta misma sección de Área de cliente.
Para elegir el VPS a contratar, vamos a la sección Bare Metal y VPS > VPS - Servidor privado virtual > Nuestros VPS del menú superior de la página principal (una vez nos hemos logueado)
Veremos los distintos planes de VPS ofertados. Elegiremos la opción más básica y económica. Si hacemos clic en el botón correspondiente de Configurar, se mostrarán las opciones para configurar nuestra instancia de VPS.
Nos pedirá que especifiquemos el período de compromiso y algunas opciones más, como la localización de nuestro VPS (Europa). Permite elegir qué distribución de sistema operativo preinstalar. Podemos elegir entre distintas, como Linux Debian, CentOS, Ubuntu… En nuestro caso, utilizaremos una distribución Debian con la aplicación Docker instalada.
Una vez completado el registro, y pasado un tiempo, recibiremos un e-mail de confirmación con los datos para acceder al VPS. A través del área de cliente de la página web, al que se accede con el usuario y contraseña que indicamos al registrarnos, podremos gestionar algunos aspectos: reinstalar el VPS, ampliar sus capacidades, asociar un nombre de dominio, etc.
Inicialmente se asignará un nombre de dominio con un código aleatorio, siguiendo el patrón vps-XXXXXX.vps.ovh.net, siendo XXXXXX el código que se nos haya asignado. Podemos, además, contratar otros nombres de dominio y asociarlos a nuestro VPS, como veremos a continuación.
En la sección de Inicio podemos consultar, entre otras cosas, qué dirección IP se nos ha asignado (IPv4 e IPv6), el nombre del VPS, y en la parte izquierda hay una serie de opciones para, por ejemplo, reiniciar el servidor, o reinstalarlo de nuevo (en el caso de que alguna instalación haya resultado defectuosa y necesitemos volver a empezar, por ejemplo).
Un paso habitual si vamos a desarrollar una aplicación web con cierta visibilidad es contratar un nombre de dominio asociado, de forma que podamos acceder a la aplicación con dicho nombre de dominio.
Desde la propia plataforma de OVH podemos contratar el dominio, con diferentes extensiones (.es, .com, .net, .org, .eu…). Podemos, no obstante, utilizar el nombre de dominio vps-XXXXXX.vps.ovh.net que nos han asignado, para hacer webs de uso privado o restringido. También podemos contratar un dominio .ovh si buscamos un precio económico. Estos dominios se suelen ofrecer por entre 1 y 3 euros al año, aproximadamente.
Desde la sección de Web Cloud en nuestra área de clientes podemos contratar el dominio.
Buscaremos primero el dominio que queremos comprar (por ejemplo, maycalle.ovh), y la plataforma nos informará de si está disponible y su precio anual. Una vez seleccionado el dominio en cuestión, los siguientes pasos son:
Cuando ya tengamos contratado el dominio con las opciones que hayamos elegido, debemos asociar el dominio al VPS. En la sección Web Cloud de nuestra área de clientes existe una subsección Dominios, donde podemos ver los dominios que tenemos contratados. Haciendo clic en uno de ellos veremos su configuración actual.
En la pestaña de Redirección veremos el dominio con la IP actualmente asignada. Dicha IP corresponde a una página de bienvenida por defecto de OVH. Hacemos clic en el botón de configuración a la derecha de la IP, y elegimos modificar registro. Asignamos la que tenemos asignada a nuestro VPS.
Además, debemos ir a la sección Zona DNS y modificar los registros A (Address Record) para que nuestro dominio apunte a la IP de nuestro VPS.
Pasados unos días tendremos disponible el dominio (de no ser así, deberemos contactar con OVH a través del soporte del panel de cliente para que lo refresquen). Podemos comprobarlo haciendo ping a dicho dominio, y viendo que la IP a la que intenta conectar corresponde con la nuestra.
ping maycalle.ovh
PING maycalle.ovh (92.222.22.170): 56 data bytes...
NOTA: si pasadas 24 o 48 horas seguimos sin tener asociada la IP a nuestro dominio, siguiendo la documentación oficial de OVH, debemos acudir a la misma sección de dominios vista antes, pero en lugar de ir a Redirección, debemos ir a la sección Zona DNS, y hacer clic en el botón Editar en modo texto de la parte derecha. Aparecerá un cuadro para editar la configuración de DNS manualmente, pero basta con que enviemos esta configuración sin más para solicitar que se propague.
Añadir subdominios
Si queremos añadir subdominios de uno contratado (por ejemplo, pruebas.maycalle.ovh), bastaría con acceder a este mismo panel de redirecciones y pulsar el botón de Crear una redirección en la parte derecha. Pondremos el nombre del subdominio:
Después indicaremos a qué lo vamos a redirigir (podemos redirigir a una web, o a un servidor). En este caso, redirigiríamos a nuestro servidor VPS:
Después, elegimos el método de redirección (por IP), y finalmente especificamos la dirección IP, que será la que se nos ha asignado para el VPS. Tras este paso, confirmaremos los datos y quedará el subdominio registrado en las redirecciones.
Existen diferentes formas de acceder al VPS para subir archivos, descargarlos o instalar software, entre otras cosas. Analizaremos aquí algunas de las más habituales y cómodas.
El protocolo SSH (Secure Shell) permite conectarnos de forma segura y cifrada a nuestro servidor Linux (VPS) desde Windows.
A través de SSH podremos ejecutar comandos en el servidor, instalar programas, modificar configuraciones o consultar registros, como si trabajásemos directamente en el propio servidor.
Una forma rudimentaria, pero útil, de acceder al servidor, es a través de un terminal por SSH (Secure Shell).
Para ello, tenemos que abrir la terminal de Windows y escribir el siguiente comando, indicando el nombre del VPS indicado en el correo de confirmación.
ssh root@vps-xxxxxxxx.vps.ovh.net
En el caso de tener un dominio contratado y ya enlazado con el VPS (por ejemplo, maycalle.ovh), podemos conectar así:
ssh root@maycalle.ovh
Observa que se antepone el usuario a la dirección del VPS, separados por una arroba.
La primera vez que te conectes, el cliente SSH (tu ordenador) te preguntará si confías en la huella digital (fingerprint) del servidor.
Esto no es un error, es una medida de seguridad para evitar ataques de suplantación (man-in-the-middle). La huella digital del servidor identifica de forma única a tu VPS. Si algún día vuelves a conectarte y SSH te avisa de que la clave ha cambiado, eso podría indicar un problema de seguridad o una reinstalación del servidor.
Escribe yes
y pulsa Enter.
SSH guardará la clave del servidor en tu equipo (en el archivo C:\Users\<tu_usuario>\.ssh\known_hosts
) y ya no volverá a preguntar la próxima vez que conectes.
A continuación, te pedirá la contraseña del usuario root (la que recibiste por correo al contratar el VPS). Al escribirla no se mostrarán caracteres en pantalla, pero se está introduciendo correctamente. Pulsa Enter para acceder.
Una vez dentro, y desde el terminal, podremos instalar el software que necesitemos (servidores web, servidores de bases de datos, etc), y también detener o reiniciar estos servicios, como veremos más adelante.
También es posible utilizar algún cliente SSH que recuerde los datos de la conexión para no tenerlos que indicar cada vez. En el caso de Windows y Linux, podemos utilizar OpenSSH, por ejemplo. En el caso específico de Windows disponemos de Solar Putty, que permite, entre otras cosas, tener varias pestañas de terminal abiertas. En lo que respecta a sistemas Mac, podemos emplear la herramienta Termius, por ejemplo. La principal ventaja de estas herramientas es simplemente el recordar los datos de la conexión para no tenerlos que poner cada vez, pero podemos conectar por SSH con un simple terminal del sistema operativo.
NOTA: Desde Windows 10 y Windows 11, ya no es necesario instalar programas externos: el sistema incluye el cliente OpenSSH de forma nativa.
Aunque las primeras conexiones al VPS suelen hacerse con el usuario root, en la práctica no se recomienda usarlo a diario. El usuario root tiene control total del sistema, y cualquier error (borrar un archivo o cambiar un permiso incorrecto) puede afectar a todo el servidor. En entornos profesionales, lo habitual es trabajar con un usuario normal con permisos de administración mediante sudo
.
Sigue los siguientes pasos para crear un usuario con permisos de sudo:
adduser alumno
usermod -aG sudo alumno
ssh alumno@vps-xxxxxxxx.vps.ovh.net
sudo
cuando necesites permisos de administrador. Por ejemplo:sudo apt update
Una vez comprobado que tu usuario con permisos de sudo funciona correctamente, es recomendable bloquear el acceso directo del usuario root, especialmente en entornos profesionales o servidores en producción.
Para hacerlo, edita la configuración del servicio SSH:
sudo nano /etc/ssh/sshd_config
PermitRootLogin prohibit-password
sudo systemctl reload ssh
A partir de ese momento, ya no será posible iniciar sesión directamente como root por SSH. Solo los usuarios autorizados con privilegios de sudo podrán realizar tareas de administración.
Aunque podemos acceder al servidor introduciendo la contraseña del usuario root, la forma más segura y profesional de hacerlo es mediante autenticación con clave SSH. Este método usa un par de claves (una pública y una privada) que permite conectarse sin necesidad de escribir contraseñas, evitando ataques por fuerza bruta.
Cuando conectas, el servidor verifica que tu clave privada coincide con su clave pública asociada, y te permite entrar automáticamente.
Paso 1. Generar el par de claves:
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
ssh-keygen -t rsa -b 4096 -C "tu_email@ejemplo.com"
C:\Users\<tu_usuario>\.ssh\
:
dir ~/.ssh
Paso 2. Copiar la clave pública al VPS:
Debemos copiar el contenido del archivo id_ed25519.pub
dentro de /root/.ssh/authorized_keys
en el servidor.
Podemos hacerlo de dos formas:
ssh-copy
(si está disponible): ssh-copy-id root@vps-xxxxxxxx.vps.ovh.net
id_ed25519.pub
con el Bloc de notas.mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Paso 3. Conectarse al VPS sin contraseña
Una vez copiada la clave, ya puedes acceder sin escribir la contraseña. SSH usará tu clave privada automáticamente y no pedirá la contraseña.
ssh root@vps-xxxxxxxx.vps.ovh.net
Paso 4. Desactivar el acceso por contraseña
Una vez verificado que la conexión con clave funciona correctamente, puedes desactivar el acceso por contraseña para reforzar la seguridad del VPS.
nano /etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication no
sudo systemctl restart ssh
A partir de ese momento, solo se podrá acceder con clave SSH.
NOTA: Si accedemos al mismo VPS desde varios equipos (por ejemplo, el ordenador de clase y el portátil personal), debemos repetir este proceso en cada uno. El VPS almacenará todas las claves públicas autorizadas, una por línea, en el archivo
/root/.ssh/authorized_keys
.
Una de las formas más cómodas y profesionales de trabajar con tu VPS es mediante Visual Studio Code y su extensión Remote - SSH. Esta opción permite conectarte al servidor y editar, compilar o desplegar código directamente en el VPS, sin tener que subir archivos manualmente por FTP. Es la forma de trabajo más habitual en entornos de desarrollo web y en equipos DevOps.
Sigue los siguientes pasos para instalar la extensión:
ssh alumno@vps-xxxxxxxx.vps.ovh.net
.A continuación, sigue estos pasos para configurar el acceso en VS Code:
C:\Users\<tu_usuario>\.ssh\config
Host vps-ovh
HostName vps-xxxxxxxx.vps.ovh.net
User root
IdentityFile C:\Users\<tu_usuario>\.ssh\id_ed25519
AddKeysToAgent yes
ForwardAgent no
Ahora podrás conectar con solo escribir ssh vps-ovh
desde la terminal o seleccionarlo desde VS Code.
Para conectarte y trabajar en remoto desde VS Code, sigue estos pasos:
Remote-SSH: Connect to Host...
y elige vps-ovh.SSH: vps-ovh
Una vez conectado:
Los cambios se guardan en el VPS, no en tu equipo local.
Para desconectarte, pulsa F1 → Remote-SSH: Close Remote Connection, o cierra la ventana.
Si algo falla:
Ejercicio 1. Acceso inicial y configuración segura del VPS
Accede al VPS de OVHCloud y déjalo configurado para trabajar de forma segura durante el resto del curso: acceso sin contraseña, usuario con permisos de sudo, bloqueo del acceso root y conexión desde VS Code.
Sigue los siguientes pasos:
- Accede al VPS como root y verifica que puedes ejecutar comandos básicos (ls, apt update)
- Crea un usuario con permisos de administración
- Comprueba que puedes iniciar sesión y usar
sudo whoami
(debe devolver root)- Configura el acceso por clave SSH
- Genera un par de claves SSH
- Copia tu clave pública al VPS para el usuario nuevo
- Asegúrate de poder acceder sin escribir la contraseña
- (Opcional) Bloquea el acceso remoto de root
- Configura VSCode para trabajar con el VPS
- Instala la extensión
Remote - SSH
en VSCode- Crea o edita
C:\Users\<tu_usuario>\.ssh\config
como se explica en los apuntes (apartado 4.3)- Conéctate desde VSCode y abre
/var/www
- Crea un archivo
prueba.txt
y verifica su existencia en la terminal remota
Si tenemos abierta una sesión SSH, podemos emplear la herramienta git para descargar aplicaciones que tengamos subidas a algún repositorio tipo GitHub, BitBucket o similar. Para ello, basta con que:
git
, si no lo hemos hecho ya:sudo apt install git
git config --global user.email tu_email@dominio.com
git config --global user.name tu_nick_en_github
git clone
, seguida de la URL del repositorio a clonar:git clone url_repositorio_git
NOTA: se creará una subcarpeta con el nombre del repositorio en cuestión.
git pull
, desde la carpeta del proyecto en sí:git pull
Ejercicio 2:
Instala git en tu VPS y configúralo con tus credenciales
Conectar un repositorio local con un repositorio remoto utilizando VSCode
Si no tenemos ningún repositorio remoto disponible, podemos utilizar VS Code para conectar un repositorio local con un repositorio remoto. Este proceso implica los siguientes pasos:
git init
en la terminal.git add
en el terminal.git commit -m "mensaje"
en el terminal.git remote add origin URL_DEL_REPOSITORIO
, ya que esta operación específica no tiene una interfaz directa en VS Code.git push
, enviando tus cambios locales a la rama remota que acabas de crear.Para cualquier nueva modificación que se realice en el proyecto local, es importante seguir un proceso sistemático para asegurarse de que los cambios se registren y se sincronicen correctamente con el repositorio remoto:
Otra vía de acceso, aprovechando la conexión SSH citada anteriormente, consiste en utilizar un cliente gráfico que soporte SFTP (SSH File Transfer Protocol). SFTP utiliza la sesión SSH y por tanto cifra credenciales y datos: es seguro siempre que uses SFTP (no FTP) y no te conectes como root.
Un cliente SFTP permite ver de forma gráfica el sistema de archivos remoto. De esta forma podemos navegar hasta cualquier carpeta y subir o descargar archivos.
Algunos cliente habituales son: FileZilla (multiplataforma), WinSCP (Windows) o Cyberduck (macOS/Windows). FileZilla puede descargarse desde su web oficial.
Desde el gestor de sitios de FileZilla (botón de la esquina superior izquierda) podemos configurar una nueva conexión.
Crea una nueva entrada, con los siguientes parámetros:
Para usar autenticación con clave privada (recomendado):
Al conectar, veremos en el panel derecho el sistema de archivos del servidor, y en el izquierdo el nuestro local. De esta forma es sencillo subir y descargar archivos.
Una alternativa para transferir ficheros es instalar un servidor FTP en el VPS y crear usuarios restringidos (chroot) que sólo puedan operar en carpetas concretas. FTP no cifra credenciales ni datos, por lo que no debe usarse en Internet salvo por compatibilidad con sistemas heredados (es decir, clientes o aplicaciones antiguas que sólo soportan FTP) y siempre sobre FTPS/TLS.
Un servidor FTP ligero y común en Linux es vsftpd. Si lo usas, aplica medidas de seguridad: desactivar acceso anónimo, chroot para usuarios, FTPS obligatorio y control de permisos. Preferiblemente, utiliza siempre SFTP (viene con SSH).
Accede al VPS, y desde escribe el siguiente comando para instalar el servidor:
sudo apt update
sudo apt install -y vsftpd
sudo systemctl enable --now vsftpd
systemctl enable --now vsftpd
: arranca el servicio y lo configura para que arranque automáticamente al reiniciar.Tras la instalación, podemos iniciar y detener el servidor con systemctl para controlar el servicio (start/stop/restart/status).
Para editar la configuración del servidor, debemos editar el archivo /etc/vsftpd.conf
.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
Algunas opciones de configuración interesantes:
anonymous_enable=NO
local_enable=YES
write_enable=NO
chroot_local_user=YES
allow_writeable_chroot=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
anonymous_enable=NO
: no permitir usuarios anónimos (nadie sin cuenta).local_enable=YES
: permitir cuentas del sistema (usuarios que creamos).write_enable=YES
: por defecto no permitir subidas; cambia a YES sólo si efectivamente se van a permitir.chroot_local_user=YES
: encerrar al usuario en su carpeta (chroot).allow_writeable_chroot=NO
: vsftpd exige que la carpeta chroot no sea escribible por el usuario (más abajo explico cómo hacerlo seguro).ssl_enable=YES
, force_local_data_ssl=YES
y force_local_logins_ssl=YES
: forzar FTPS/TLS para cifrar la conexión si decides exponer FTP en Internet.pasv_enable=YES
, pasv_min_port=40000
, pasv_max_port=40100
: rango de puertos pasivos; si tu VPS está detrás de NAT/Router, este rango debe abrirse en el firewall/router.Tras editar, reinicia el servidor:
sudo systemctl restart vsftpd
El objetivo es crear usuarios que puedan transferir ficheros pero no abrir una consola SSH ni salir de su carpeta.
Paso 1. Crear un grupo para cuentas FTP
Para identificar mejor a los usuarios que acceden por FTP, podemos crear un grupo, lo que facilita la gestión de permisos y políticas. Llamaremos al grupo, por ejemplo, ftpusers:
sudo groupadd ftpusers
Paso 2. Crear un usuario sin shell (sin acceso por consola)
Vamos a crear el usuario usuarioftp1:
# crear usuario sin shell (no podrá abrir terminal/ssh)
sudo useradd -M -d /srv/ftp/usuarioftp1 -s /usr/sbin/nologin -G ftpusers usuarioftp1
sudo passwd usuarioftp1
En algunas distribuciones, vsftpd comprueba que el shell esté listado en /etc/shells
. Si el login falla al usar nologin, añade /usr/sbin/nologin
a /etc/shells
:
echo "/usr/sbin/nologin" | sudo tee -a /etc/shells
Paso 3. Crear la estructura de carpetas segura
Vsftpd pide que el directorio raíz del chroot no sea escribible por el usuario. Por eso:
# crear directorios
sudo mkdir -p /srv/ftp/usuarioftp1/uploads
# La raíz del chroot: propiedad root, no escribible por el usuario
sudo chown root:root /srv/ftp/usuarioftp1
sudo chmod 755 /srv/ftp/usuarioftp1
# Subcarpeta escribible por el usuario: aquí sube ficheros
sudo chown usuarioftp1:ftpusers /srv/ftp/usuarioftp1/uploads
sudo chmod 750 /srv/ftp/usuarioftp1/uploads
Con los comandos anteriores, el usuario queda encerrado en /srv/ftp/usuarioftp1
(no puede salir) y solo puede escribir en uploads/
. Esto evita que borre archivos del sistema u obtenga permisos no deseados.
Para conectar desde el cliente a este servidor FTP, utilizamos el cliente FileZilla comentado anteriormente. En este caso, desde el Gestor de sitios creamos una nueva conexión FTP, con el usuario que hayamos añadido previamente.
Al conectar, veremos que estamos restringidos a la carpeta que se ha asignado a dicho usuario.
Esta forma de acceder y subir archivos es más segura, al no poder alterar el contenido de carpetas externas a la indicada en la configuración. Podemos emplear este método para subir archivos como imágenes, vídeos, etc.