¿Cómo configurar un servidor SFTP con usuarios conectados en sus directorios personales? [duplicar]

20

He intentado configurar un servidor SFTP con múltiples usuarios enchufando en sus directorios principales. Seguí el consejo en esta guía ( Archive.org link ) y luego ejecuta los siguientes comandos en los directorios del usuario

chown root:root /home/user/
chmod 755 /home/user/

Hay una carpeta adicional en el directorio de inicio de todos los usuarios llamada public que es propiedad de su usuario para permitirles crear directorios y cargar y eliminar archivos según sea necesario. (Esto fue advertido en la guía que mencioné anteriormente)

Ahora cuando ejecuto sftp -P 435 user@localhost , aparece este error:

  

Error de escritura: tubería rota
  No se pudo leer el paquete: restablecimiento de la conexión por pares

¿Cómo procedo desde aquí? La idea última es hacer que cada usuario en otra máquina use FileZilla para iniciar sesión en sus directorios de inicio chrooted y luego pueda cargar directorios y archivos. Todo esto en SFTP (porque es más seguro)

    
pregunta Nitin Venkatesh 17.06.2011 - 15:10

5 respuestas

24

Ese artículo también describe cómo obtener acceso a un shell chroot, pero como solo quieres una cuenta sftp, simplemente sigue estas instrucciones:

Editar /etc/ssh/sshd_config y agregar las líneas:

SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

Busca la línea UsePAM yes y coméntala:

#UsePAM yes

Sin deshabilitar esto, mi servidor SSH se bloqueará al volver a cargar / reiniciar. Como no necesito funciones elegantes de PAM, está bien.

Para mayor seguridad, restrinja a los usuarios que pueden iniciar sesión. Si olvida agregar usuarios de SFTP al grupo sftp , les otorga acceso de shell libre. No es un buen escenario. Como SSH no puede combinar AllowUsers y AllowGroups (un inicio de sesión tiene que cumplir ambas reglas), debe crear un grupo adicional, por ejemplo, ssh-users . Agregue los usuarios que pueden iniciar sesión ( youruser más abajo) a través de SSH:

sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users

Y agrega la siguiente línea a /etc/ssh/sshd_config :

AllowGroups ssh-users sftp

Ahora proceda con la modificación de los permisos del directorio de inicio de los usuarios para permitir el chrooting (por ejemplo, usuario sftp-user ):

sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user

Crea un directorio en el que sftp-user pueda poner cualquier archivo en él:

sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public

Si se ejecuta en algún problema, compruebe /var/log/syslog y /var/log/auth.log para obtener más información. Ejecute ssh o sftp con la opción -vvv para depurar mensajes. Para sftp , la opción debe aparecer antes que el host como en sftp -vvv user@host .

    
respondido por el Lekensteyn 17.06.2011 - 16:36
8

Estoy usando Ubuntu LTS 12.04 y después de mucho dolor, esto funcionó para mí.

Mi configuración para /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  1. crear grupo sftp:

    groupadd sftp

  2. Crear usuario directamente con el nuevo grupo de sftp conectado:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. establece permisos para usar con ssh para sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. reiniciar el servicio:

    service ssh restart

Tenga en cuenta que a la carpeta de inicio del nuevo usuario de sftp se le debe otorgar el propietario de la raíz.

    
respondido por el Aten 16.10.2012 - 13:41
7

Solo quería agregar que los permisos de la carpeta en el árbol del directorio deben establecerse de cierta manera.

  

los estrictos requisitos de propiedad / permisos de sshd dictan que cada   el directorio en la ruta del chroot debe ser propiedad de root y solo puede escribirse   por el propietario.

Fuente

Estaba teniendo un error muy similar, y la reparación de mis permisos de directorio me solucionó el problema.

    
respondido por el Nathan Jones 30.09.2015 - 20:08
3

Aquí hay una guía paso a paso para permitir:

  1. Acceso SFTP a / home / bob / uploads para usuario bob
  2. Bloquear bob fuera de SSH
  3. Use nombre de usuario / contraseñas en lugar de claves:

Primero, edite su archivo / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Desplácese hacia abajo y modifique:

PasswordAuthentication yes

y agregue esto en la parte inferior:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Presione Ctrl-X para salir y guardar.

Ahora agregue el usuario:

sudo useradd bob
sudo passwd bob

Ahora agrega los grupos y deshabilita ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Ahora establece permisos:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Todo esto mientras está conectado como usuario raíz (ec2-usuario en Amazon Linux AMI)

    
respondido por el Rob Mulder 26.07.2016 - 01:28
0

También tenga en cuenta al agregar la directiva Match al archivo de configuración, que las directivas que no sean relevantes para lo que está buscando pueden dejar de funcionar. En lugar de comentar todo lo que no es compatible, simplemente mueva cualquier sección que incluya una directiva Match al final del archivo de configuración.

Además, los permisos probablemente deban establecerse en 755 en el directorio chroot y en todos los directorios principales, y el propietario en root: root. Personalmente, configuré el directorio chroot sshd_config para que sea% h, el directorio de inicio del usuario, y luego establezca su directorio de inicio en el lugar que quiero que sea, como /var/www/examplewebsite.com. Algunos pueden preferir configurar un directorio de inicio chroot con una parte estática seguida del nombre de usuario, como / var / www /% u, sin embargo, esto requiere asegurarse de que el directorio chroot de su usuario coincida con su nombre de usuario, por supuesto.

Para solucionar problemas de conexión, detenga el servicio ssh, asegúrese de abrir una sesión SSH o dos primero para probar y luego inicie el daemon interactivamente en modo de depuración para examinar la información de depuración de la conexión, ya que esto puede ayudarlo a identificar cualquier problema y busca cómo solucionarlos.

Comandos: servicio ssh stop; / usr / sbin / sshd -d

¡Asegúrate de iniciar ssh nuevamente después de que hayas terminado! Comando: service ssh start

    
respondido por el RedScourge 28.01.2016 - 02:09

Lea otras preguntas en las etiquetas