Ambos sftp-server
y internal-sftp
son parte de OpenSSH. sftp-server
es un binario independiente internal-sftp
es solo una palabra clave de configuración que le indica sshd
que use el código del servidor SFTP incorporado, en sshd
lugar de ejecutar otro proceso (generalmente el sftp-server
).
Desde el punto de vista funcional, sftp-server
y internal-sftp
son casi idénticos. Se crean a partir del mismo código fuente.
La principal ventaja de internal-sftp
es que no requiere archivos de soporte cuando se usa con la ChrootDirectory
directiva .
Citas de la sshd_config(5)
página del manual :
Otra ventaja de internal-sftp
es un rendimiento, ya que no es necesario ejecutar un nuevo subproceso para él.
Se internal-sftp
agregó mucho más tarde (OpenSSH 4.9p1 en 2008?) Que el sftp-server
binario independiente , pero por ahora es el predeterminado.
Creo que no hay razón para usarlo sftp-server
para nuevas instalaciones.
Puede parecer que sshd
podría usarse automáticamente internal-sftp
, cuando se encuentra sftp-server
, ya que la funcionalidad es idéntica e internal-sftp
incluso 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-sftp
evitaría la restricción, ya que el shell de inicio de sesión ya no está involucrado.
Usando sftp-server
binario (siendo un proceso independiente) puede usar algunos hacks, como ejecutar el SFTP bajosudo
.
Para SSH-1 (si alguien todavía lo está usando), la Subsystem
directiva 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-server
nombre codificado.
ForceCommand internal-sftp
debería lograr lo mismosshfs host:/home/user/.ssh ~/hackme
para editar todas esas configuraciones para abrir el acceso si cambias de opinión más adelante.