Ambos sftp-servere internal-sftpfazem parte do OpenSSH. sftp-serveré um binário independente. internal-sftpé apenas uma palavra-chave de configuração que diz sshdpara usar o código do servidor SFTP embutido, em sshdvez de executar outro processo (normalmente o sftp-server).
Do ponto de vista funcional, sftp-servere internal-sftpsão quase idênticas. Eles são criados a partir do mesmo código fonte.
A principal vantagem internal-sftpé que ele não requer arquivos de suporte quando usado com a ChrootDirectorydiretiva .
Citações da sshd_config(5)página de manual :
Outra vantagem internal-sftpé o desempenho, pois não é necessário executar um novo subprocesso para ele.
O internal-sftpfoi adicionado mais tarde (OpenSSH 4.9p1 em 2008?) Do que o autônomo sftp-serverbinário, mas é o padrão até agora.
Eu acredito que não há razão para usar o sftp-serverpara novas instalações.
Pode parecer que sshdpoderia usar automaticamente internal-sftp, quando encontrar sftp-server, como a funcionalidade é idêntica e internal-sftptem até as vantagens acima. Mas existem casos extremos, onde existem diferenças.
Poucos exemplos:
O administrador pode confiar em uma configuração do shell de logon para impedir que certos usuários façam login. A mudança para o internal-sftpignoraria a restrição, pois o shell de logon não está mais envolvido.
Usando sftp-serverbinário (sendo um processo independente), você pode usar alguns hacks, como executar o SFTP emsudo .
Para SSH-1 (se alguém ainda estiver usando), a Subsystemdiretiva não está envolvida. Um cliente SFTP usando SSH-1 informa explicitamente ao servidor qual binário o servidor deve executar. Portanto, os clientes SFTP herdados do SSH-1 têm um sftp-servernome codificado.
ForceCommand internal-sftpdeve conseguir o mesmo