User Tools

Site Tools


informatica:linux:sftp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
informatica:linux:sftp [2013/10/14 10:48] – created javiinformatica:linux:sftp [2017/05/10 10:47] – [Restringir sftp a un usuario con escritura] javi
Line 3: Line 3:
 sftp ftp ssl tls sftp ftp ssl tls
  
-===== Restringir sftp a un usuario y a una IP =====+Comentario comun a todos lo articulos: 
 + 
 +  * El directorio especificado en "ChrootDirectory" debe tener exactamente estos permisos: 
 + 
 +  drwxr-xr-x 4 root root 4096 Nov 17 12:02 www 
 + 
 +Es decir, pertenecer al usuario y grupo "root" y permisos 755. En caso contrario al intentar hacer el sftp se obtiene el siguiente error: 
 + 
 +<code>   
 +packet_write_wait: Connection to 172.17.0.2 port 22: Broken pipe 
 +Couldn't read packet: Connection reset by peer 
 +</code> 
 + 
 +===== 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 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
Line 35: Line 48:
     ForceCommand internal-sftp     ForceCommand internal-sftp
 </code> </code>
 +
 +===== 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:
 +
 +<code>
 +Subsystem sftp internal-sftp
 +
 +Match User usuario 
 +    PasswordAuthentication yes
 +    ChrootDirectory /srv/ftp/usuario
 +    AllowTCPForwarding no
 +    X11Forwarding no
 +    ForceCommand internal-sftp
 +</code>
 +
 +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:
 +
 +^ Directorio ^ Propietario ^
 +| /srv/ftp/usuario | root |
 +| /srv/ftp/usuario/dir1 | usuario |
 +
 +===== Acceso escritura usuario www-data =====
 +
 +Es un parche para que se puedan subir archivos vía SFTP o a través de la aplicación web (por ejemplo Wordpress) sin que haya colisión de permisos:
 +
 +1. Editar el archivo original:
 +
 +  sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 
 +  sudo vim /etc/ssh/sshd_config
 +  
 +Y anyadir al final:
 +
 +  AllowUsers www-data
 +
 +2. Editar:
 +
 +  sudo cp /etc/passwd /etc/passwd.bak 
 +  sudo vim /etc/passwd
 +  
 +Y dejar la linea del usuario 'www-data' así:
 +
 +  www-data:x:33:33:www-data:/var/www:/bin/bash
 +
 +3. Asignar una contraseña al usuario 'www-data':
 +
 +  sudo passwd www-data
 +  
 +4. Probar:
 +
 +  sftp www-data@ip_servidor
 +
informatica/linux/sftp.txt · Last modified: 2018/10/22 09:43 by javi