Ambos sftp-server
e internal-sftp
fazem parte do OpenSSH. sftp-server
é um binário independente. internal-sftp
é apenas uma palavra-chave de configuração que diz sshd
para usar o código do servidor SFTP embutido, em sshd
vez de executar outro processo (normalmente o sftp-server
).
Do ponto de vista funcional, sftp-server
e internal-sftp
sã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 ChrootDirectory
diretiva .
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-sftp
foi adicionado mais tarde (OpenSSH 4.9p1 em 2008?) Do que o autônomo sftp-server
binário, mas é o padrão até agora.
Eu acredito que não há razão para usar o sftp-server
para novas instalações.
Pode parecer que sshd
poderia usar automaticamente internal-sftp
, quando encontrar sftp-server
, como a funcionalidade é idêntica e internal-sftp
tem 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-sftp
ignoraria a restrição, pois o shell de logon não está mais envolvido.
Usando sftp-server
biná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 Subsystem
diretiva 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-server
nome codificado.
ForceCommand internal-sftp
deve conseguir o mesmosshfs host:/home/user/.ssh ~/hackme
editar todas essas configurações de volta ao acesso aberto, se mudar de idéia mais tarde.