Configuración del sistema operativo Linux SFTP

        sftp utiliza el túnel cifrado ssh, que es más instalable que ftp, y se basa en el servicio ssh que viene con el sistema. A diferencia de ftp, necesita una instalación adicional. El servicio sftp basado en ssh tiene mejor seguridad que ftp (Cuenta sin texto sin formato transmisión de contraseñas) y una cómoda gestión de derechos (restringiendo el directorio activo del usuario).

        1. Abra la cuenta sftp, para que el usuario solo pueda operar archivos a través de sftp, pero no ssh al servidor
        2. Limite el directorio activo del usuario, para que el usuario solo pueda estar activo en el directorio especificado, usando la configuración de ChrootDirectory de sftp

Comprobar la versión ssh

ssh -V

Añadir grupo de usuarios sftp

agregar grupo sftp

crear usuario sftp

useradd -g sftp -s /bin/false baksftp

-s /bin/false : no permite inicios de sesión de shell. -g sftp : Únete al grupo sftp

configurar la clave

contraseña baksftp

Establecer directorio activo

mkdir -p /datos/sftp/baksftp

Configurar los permisos del directorio Chroot

# Nota: si este directorio se utiliza para el directorio activo chroot subsiguiente, el propietario del directorio debe ser root 
chown root:sftp /data/sftp/baksftp 
chmod 755 /data/sftp/baksftp

Posibles problemas con chroot :

        Debido a que chroot cambiará el directorio raíz de la sesión a este, es probable que el inicio de sesión ssh solicite /bin/bash: No existe tal archivo o error de directorio, porque la ruta de esta sesión será [chroot]/bin/bash

Especificar como el directorio de inicio del usuario del grupo sftp

usermod -d /datos/sftp/baksftp baksftp

Modificar el archivo de configuración ssh

vi /etc/ssh/sshd_config

Configuración básica de inicio de sesión remoto ssh

# Habilitar verificación 
PasswordAuthentication sí 
# Deshabilitar inicio de sesión con contraseña vacía 
PermitEmptyPasswords no 
# Habilitar inicio de sesión remoto 
PermitRootLogin sí

Ahora puede usar ssh para iniciar sesión de forma remota en el servidor

configurar ftp

# Modifique la configuración del subsistema, use el servicio internal-sftp que viene con el sistema para cumplir con los requisitos 
# Subsystem sftp /usr/libexec/openssh/sftp-server 
Subsystem sftp internal-sftp

        Subsistema se refiere al submódulo de ssh, el módulo sftp está habilitado aquí, y el sftp interno que viene con el sistema se utiliza para proporcionar este servicio. De hecho, después de configurar esto, puede iniciar sesión con la cuenta ssh o sftp con el cliente ftp.

        Si desea que el usuario inicie sesión en el servidor solo a través de sftp pero no de ssh, y para limitar el directorio activo del usuario, continúe viendo la configuración a continuación

# Restricciones en el usuario de inicio de sesión 
Match Group sftp 
ChrootDirectory /data/sftp/%u # También puede usar %h para representar el directorio de inicio del usuario %u para representar el nombre de usuario 
ForceCommand internal-sftp # Usar a la fuerza el servicio internal-sftp que viene con el sistema, para que el usuario solo use el modo ftp para iniciar sesión 
AllowTcpForwarding no 
X11Forwarding no

Coincidir con [Usuario|Grupo] nombre de usuario|nombre de grupo :

        Coincidencia [Usuario|Grupo] sftp Esta es la configuración de permisos para el usuario de inicio de sesión. La coincidencia funcionará en el usuario o grupo de usuarios coincidentes y es superior a la configuración general de elementos de ssh.

Directorio chroot :

        El directorio activo del usuario puede usar %h para identificar el directorio de inicio del usuario y %u para representar el nombre de usuario. Cuando el usuario coincidente inicia sesión, el directorio raíz de la sesión cambiará a este directorio. He aquí dos cuestiones a las que hay que prestar especial atención:

         1. Para todos los directorios en la ruta chroot, el propietario debe ser root y la autoridad máxima es 0755, a la que se debe prestar atención. Entonces, si inicia sesión como usuario no root, debemos crear un nuevo directorio en chroot que el usuario que inició sesión tenga permiso para operar.

        2. Una vez que se configura chroot, el directorio raíz "/" de la sesión del usuario correspondiente se cambiará a este directorio cuando el usuario correspondiente inicie sesión. Si usa ssh en lugar del protocolo sftp para iniciar sesión en este momento, probablemente se le solicita: /bin/bash : No existe tal archivo o directorio

        Para el usuario que inicia sesión en este momento, el directorio raíz "/" en la sesión se ha cambiado al directorio chroot establecido, a menos que chroot sea el directorio "/" del sistema, de lo contrario no habrá comando bash bajo el chroot/bin en este momento Al igual que el conjunto de parámetros -s /bin/false al agregar un usuario, el tipo de comando inicial /bin/false del shell naturalmente no puede iniciar sesión de forma remota a través de ssh.

        Comando de fuerza :

        El comando inicial que se usa cuando se obliga a un usuario a iniciar sesión en una sesión. Si este elemento está configurado como se indicó anteriormente, el usuario coincidente solo puede iniciar sesión con el protocolo sftp, pero no puede iniciar sesión con ssh, y se le preguntará: Este servicio solo permite conexiones sftp.

Crear un nuevo directorio de carga

        Cree un nuevo directorio para que el usuario stp baksftp cargue archivos. El propietario de este directorio es baksftp, todos los grupos son sftp, el propietario tiene permiso de escritura y todos los grupos no tienen permiso de escritura.

mkdir /data/sftp/baksftp/upload 
chown baksftp:sftp /data/sftp/baksftp/upload 
chmod 755 /data/sftp/baksftp/upload

Reinicie el servicio sshd

# Cerrar selinux 
setenforce 0 
# Reiniciar el servicio sshd 
systemctl reiniciar sshd.service

iniciar sesión en sftp

sftp -P22 baksftp@IP

Supongo que te gusta

Origin blog.csdn.net/qq_41210783/article/details/131411693
Recomendado
Clasificación