Ambos sftp-servery internal-sftpson parte de OpenSSH. sftp-serveres un binario independiente internal-sftpes solo una palabra clave de configuración que le indica sshdque use el código del servidor SFTP incorporado, en sshdlugar de ejecutar otro proceso (generalmente el sftp-server).
Desde el punto de vista funcional, sftp-servery internal-sftpson casi idénticos. Se crean a partir del mismo código fuente.
La principal ventaja de internal-sftpes que no requiere archivos de soporte cuando se usa con la ChrootDirectorydirectiva .
Citas de la sshd_config(5)página del manual :
Otra ventaja de internal-sftpes un rendimiento, ya que no es necesario ejecutar un nuevo subproceso para él.
Se internal-sftpagregó mucho más tarde (OpenSSH 4.9p1 en 2008?) Que el sftp-serverbinario independiente , pero por ahora es el predeterminado.
Creo que no hay razón para usarlo sftp-serverpara nuevas instalaciones.
Puede parecer que sshdpodría usarse automáticamente internal-sftp, cuando se encuentra sftp-server, ya que la funcionalidad es idéntica e internal-sftpincluso tiene las ventajas anteriores. Pero hay casos extremos, donde hay diferencias.
Pocos ejemplos:
El administrador puede confiar en una configuración de shell de inicio de sesión para evitar que ciertos usuarios inicien sesión. Cambiar a el internal-sftpevitaría la restricción, ya que el shell de inicio de sesión ya no está involucrado.
Usando sftp-serverbinario (siendo un proceso independiente) puede usar algunos hacks, como ejecutar el SFTP bajosudo .
Para SSH-1 (si alguien todavía lo está usando), la Subsystemdirectiva no está involucrada en absoluto. Un cliente SFTP que usa SSH-1 le dice explícitamente al servidor qué binario debe ejecutar el servidor. Entonces, los clientes SFTP SSH-1 heredados tienen un sftp-servernombre codificado.
ForceCommand internal-sftpdebería lograr lo mismosshfs host:/home/user/.ssh ~/hackmepara editar todas esas configuraciones para abrir el acceso si cambias de opinión más adelante.