User Tools

Site Tools


informatica:linux:sftp

This is an old revision of the document!


sftp

sftp ftp ssl tls

Comentario comun a todos lo articulos:

  • El directorio especificado en “ChrootDirectory”, y creo que los padres tambien, tienen que pertenecer al usuario “root”

Restringir sftp a un usuario y a una IP, solo lectura

Queremos que el usuario “ftp_user” solo se pueda ejecutar sftp (y no iniciar una sesion ssh normal) en el servidor remoto y ademas que solo lo pueda hacer desde una IP conocida, en este ejemplo la 10.0.0.15

1. Crear el usuario “ftp_user”

sudo adduser ftp_user

Contestar a todas las preguntas. Recordar la contrasenya

2. Crear el directorio al que se podra conectar:

sudo mkdir -p /srv/ftp/usuario_ftp
sudo chmod 0755 /srv/ftp/usuario_ftp

3. Editar:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 
sudo vim /etc/ssh/sshd_config

Y anyadir o editar las siguientes lineas:

Subsystem sftp internal-sftp

Match User ftp_user Address 10.0.0.15
    PasswordAuthentication yes
    ChrootDirectory /srv/ftp/ftp_user
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Restringir sftp a un usuario con escritura

1. Crear el usuario “ftp_user”

sudo adduser ftp_user

Contestar a todas las preguntas. Recordar la contrasenya

2. Crear el directorio al que se podra conectar:

sudo mkdir -p /srv/ftp/usuario/ftp
sudo chmod 0755 /srv/ftp/usuario/

3. Crear el punto de montaje:

sudo mkdir -p /home/usuario/ftp
sudo chown usuario:usuario /home/usuario/ftp

4. Montarlo de forma persistente:

sudo cp /etc/fstab /etc/fstab.bak; sudo vim /etc/fstab

Con la siguiente linea:

/srv/ftp/usuario/ftp      /home/usuario/ftp none    bind

5. Editar:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 
sudo vim /etc/ssh/sshd_config

Y anyadir o editar las siguientes lineas:

Subsystem sftp internal-sftp

Match User usuario 
    PasswordAuthentication yes
    ChrootDirectory /srv/ftp/usuario
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

6. Reiniciar ssh

sudo service ssh restart

7. Probar desde el cliente:

sftp usuario@maquina_remota
cd ftp
put local_file.txt

NOTA Para que funcione, y esto hay que revisarlo, el directorio padre tiene que pertener a root y el hijo al usuario ftp:

/srv/ftp/usuario → root /srv/ftp/usuario/dir1 → usuario

informatica/linux/sftp.1458229975.txt.gz · Last modified: 2016/03/17 15:52 by javi