sftp

PHOTO EMBED

Fri Jul 25 2025 19:03:04 GMT+0000 (Coordinated Universal Time)

Saved by @jrg_300i #undefined

1. Instalar el servidor OpenSSH
Abre la terminal y asegúrate de que el paquete de servidor SSH esté instalado:
bash
sudo apt update
sudo apt install openssh-server

Verifica que el servicio esté activo:
bash
sudo systemctl status ssh

Si no está activo, inícialo con:
bash
sudo systemctl start ssh

2. Crear un usuario para acceso SFTP (opcional)
Si quieres un usuario específico para SFTP, créalo así:
bash
sudo adduser nombreusuario
Asigna la contraseña y los datos que te pida.

3. Configurar acceso SFTP restringido (opcional, para mayor seguridad)
Si quieres que el usuario solo acceda a un directorio específico (jaula/chroot), edita la configuración SSH:
bash
sudo nano /etc/ssh/sshd_config

Al final del archivo agrega algo así para restringir el usuario a su carpeta SFTP:
text
Match User nombreusuario
    ChrootDirectory /home/nombreusuario/ftp
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Luego crea la carpeta y asigna permisos apropiados:
bash
sudo mkdir -p /home/nombreusuario/ftp
sudo chown root:root /home/nombreusuario
sudo chown nombreusuario:nombreusuario /home/nombreusuario/ftp
Esto asegura que el usuario solo pueda acceder a /home/nombreusuario/ftp vía SFTP.

4. Reiniciar el servidor SSH para aplicar cambios
bash
sudo systemctl restart ssh
Te pedirá la contraseña y luego podrás usar comandos como ls, cd, put o get para subir y bajar archivos.

6. Acceso gráfico (opcional)
En el gestor de archivos, ve a "Conectar al servidor" y escribe:
text
sftp://nombreusuario@ip_del_servidor
Ingresa la contraseña y podrás acceder como si fuera una carpeta local.
Esta es la manera estándar de configurar un servidor SFTP seguro en Linux Mint, usando OpenSSH que ofrece cifrado y autenticación robusta sin necesidad de configurar servidores FTP separados.

configurar el acceso SFTP con claves SSH en lugar de contraseña o a crear un entorno SFTP aún más seguro.

1. Generar un par de claves SSH en tu equipo cliente
Abre una terminal en la máquina desde donde te conectarás (puede ser la misma Linux Mint o tu PC cliente) y genera las claves SSH con:
ssh-keygen -t ed25519
Si prefieres RSA (también válido), usa -t rsa.
Cuando te pregunte dónde guardarlas, puedes aceptar la ruta predeterminada (~/.ssh/id_ed25519).
Opcionalmente, asigna una frase de contraseña (passphrase) para mayor seguridad o déjalo vacío para acceso sin contraseña.
Esto generará dos archivos: la clave privada (id_ed25519) y la clave pública (id_ed25519.pub).

2. Copiar la clave pública al servidor Linux Mint (donde está el servidor SSH)
Para permitir el acceso sin contraseña, copia la clave pública al servidor en el archivo authorized_keys del usuario al que quieres conectarte:
bash
ssh-copy-id nombreusuario@ip_del_servidor
Sustituye nombreusuario por el usuario del servidor y ip_del_servidor por la IP real o dominio.

Si no tienes la herramienta ssh-copy-id, puedes hacerlo manualmente:
Conecta al servidor con contraseña:
bash
ssh nombreusuario@ip_del_servidor

Luego en cliente local:
bash
cat ~/.ssh/id_ed25519.pub | ssh nombreusuario@ip_del_servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

3. Configurar el servidor SSH para usar solo autenticación por clave (opcional y seguro)
Edita la configuración SSH en el servidor:
bash
sudo nano /etc/ssh/sshd_config

Busca o agrega las siguientes líneas para permitir la autenticación mediante claves y deshabilitar la contraseña si quieres máxima seguridad:
text
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
Nota: No apagues la autenticación por contraseña hasta que hayas confirmado que la autenticación por clave funciona correctamente, para evitar quedarte sin acceso.

Guarda el archivo y reinicia el servidor SSH:
bash
sudo systemctl restart ssh

4. (Opcional) Configurar un entorno SFTP restringido (jaula/chroot)
Si quieres limitar al usuario a solo un directorio específico cuando use SFTP (por ejemplo /home/nombreusuario/ftp), agrega estas líneas al final del archivo /etc/ssh/sshd_config:
text
Match User nombreusuario
    ChrootDirectory /home/nombreusuario/ftp
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Luego ajusta permisos del directorio principal (chroot):
bash
sudo chown root:root /home/nombreusuario
sudo chmod 755 /home/nombreusuario
sudo mkdir -p /home/nombreusuario/ftp
sudo chown nombreusuario:nombreusuario /home/nombreusuario/ftp

Y reinicia el servicio SSH nuevamente:
bash
sudo systemctl restart ssh

5. Conectarte al servidor desde cliente usando SFTP con clave SSH
Usa el siguiente comando para conectar:
bash
sftp nombreusuario@ip_del_servidor
Ahora la conexión no debe pedir contraseña, sino que usará la clave privada para autenticar.
Si la clave privada tiene passphrase, te la pedirá para desbloquear la clave.

6. (Opcional) Usar agente SSH para gestionar la clave privada
Para no tener que ingresar la passphrase cada vez, puedes agregar la clave al agente SSH:
bash
ssh-add ~/.ssh/id_ed25519

7. Acceso gráfico al SFTP con clave SSH
En gestores de archivo modernos (Nautilus, Caja):
Ve a "Conectar al servidor"
Escribe:
text
sftp://nombreusuario@ip_del_servidor
Si configuraste clave sin passphrase o tienes la clave "cargada" en el agente SSH, te conectará sin pedir contraseña.
Con esto tienes configurado un acceso SFTP seguro mediante claves SSH, muy superior a usar contraseña, y opcionalmente protegido con un entorno restringido (chroot). Si quieres, puedo ayudarte a preparar scripts automatizados o detalles para gestionar varias claves o usuarios.






content_copyCOPY