Les deux sftp-server
et internal-sftp
font partie d'OpenSSH. sftp-server
est un binaire autonome. internal-sftp
est juste un mot-clé de configuration qui indique sshd
d’utiliser le code de serveur SFTP intégré au sshd
lieu d’exécuter un autre processus (généralement le sftp-server
).
Du point de vue fonctionnel, sftp-server
et internal-sftp
sont presque identiques. Ils sont construits à partir du même code source.
Le principal avantage internal-sftp
est qu'il ne nécessite aucun fichier de support lorsqu'il est utilisé avec ChrootDirectory
directive .
Citations de la sshd_config(5)
page de manuel :
Pour Subsystem
directive :
La commande sftp-server
implémente le sous-système de transfert de fichiers SFTP.
Sinon, le nom internal-sftp
implémente un serveur SFTP en cours de traitement. Cela peut simplifier les configurations en utilisant ChrootDirectory
pour forcer une autre racine de système de fichiers sur les clients.
Pour ForceCommand
directive :
Le fait de spécifier une commande de internal-sftp
forcera l'utilisation d'un serveur SFTP en cours de processus qui ne nécessite aucun fichier de support lorsqu'il est utilisé avec ChrootDirectory
.
Pour ChrootDirectory
directive :
Le ChrootDirectory
doit contenir les fichiers et répertoires nécessaires pour prendre en charge la session de l'utilisateur. Pour une session interactive cela nécessite au moins une coquille, généralement sh
, et de base /dev
nœuds tels que null
, zero
, stdin
, stdout
, stderr
et tty
dispositifs. Pour les sessions de transfert de fichiers utilisant SFTP, aucune configuration supplémentaire de l'environnement n'est nécessaire si le serveur sftp en cours de traitement est utilisé, bien que les sessions utilisant la consignation puissent nécessiter /dev/log
un emplacement dans le répertoire chroot de certains systèmes d'exploitation (voir sftp-server
pour plus de détails).
Un autre avantage de internal-sftp
la performance est qu'il n'est pas nécessaire d'exécuter un nouveau sous-processus.
Le a internal-sftp
été ajouté bien plus tard (OpenSSH 4.9p1 en 2008?) Que le sftp-server
binaire autonome , mais c'est la valeur par défaut pour le moment.
Je crois qu'il n'y a aucune raison d'utiliser le sftp-server
pour de nouvelles installations.
Il peut sembler que vous sshd
pourriez utiliser automatiquement internal-sftp
, quand il rencontre sftp-server
, comme la fonctionnalité est identique et internal-sftp
a même les avantages ci-dessus. Mais il y a des cas extrêmes, où il y a des différences.
Quelques exemples:
L'administrateur peut s'appuyer sur une configuration de shell de connexion pour empêcher certains utilisateurs de se connecter. Le passage à la valeur internal-sftp
contournerait la restriction, car le shell de connexion n'est plus impliqué.
En utilisant sftp-server
binaire (étant un processus autonome), vous pouvez utiliser certains hacks, comme exécuter le SFTP soussudo
.
Pour SSH-1 (si quelqu'un l'utilise encore), la Subsystem
directive n'est pas impliquée du tout. Un client SFTP utilisant SSH-1 indique explicitement au serveur le fichier binaire que le serveur doit exécuter. Ainsi, les clients SSH-1 SFTP hérités ont un sftp-server
nom codé en dur.
ForceCommand internal-sftp
devrait atteindre le mêmesshfs host:/home/user/.ssh ~/hackme
pour modifier tous ces paramètres afin d’ouvrir un accès en libre accès si vous changez d’avis par la suite.