Zarówno sftp-serveri internal-sftpsą częścią OpenSSH. sftp-serverjest samodzielnym plikiem binarnym. internal-sftpjest tylko słowem kluczowym konfiguracji, które mówi, sshdaby użyć wbudowanego kodu serwera SFTP sshd, zamiast uruchamiania innego procesu (zazwyczaj sftp-server).
Z funkcjonalnego punktu widzenia, sftp-serveri internal-sftpsą prawie identyczne. Są zbudowane z tego samego kodu źródłowego.
Główną zaletą internal-sftpjest to, że nie wymaga plików pomocniczych, gdy jest używany z ChrootDirectorydyrektywą .
Cytaty ze strony sshd_config(5)man :
Kolejną zaletą internal-sftpjest wydajność, ponieważ nie jest konieczne uruchamianie dla niej nowego podprocesu.
internal-sftpDodano znacznie później (OpenSSH 4.9p1 w 2008 roku?) Niż samodzielny sftp-serverbinarnego, ale to jest domyślnym teraz.
Uważam, że nie ma powodu, aby używać go sftp-serverdo nowych instalacji.
Może się wydawać, że sshdmoże automatycznie korzystać internal-sftp, gdy się pojawi sftp-server, ponieważ funkcjonalność jest identyczna i internal-sftpma nawet powyższe zalety. Ale są przypadki skrajne, w których występują różnice.
Kilka przykładów:
Administrator może polegać na konfiguracji powłoki logowania, aby uniemożliwić zalogowanie się niektórym użytkownikom. Przełączenie na internal-sftpto pomija ograniczenie, ponieważ powłoka logowania nie jest już zaangażowana.
Korzystając z sftp-serverbinarnego (będącego samodzielnym procesem), możesz użyć kilku hacków, takich jak uruchomienie SFTP podsudo .
W przypadku SSH-1 (jeśli ktoś nadal go używa), Subsystemdyrektywa w ogóle nie jest zaangażowana. Klient SFTP korzystający z SSH-1 wyraźnie informuje serwer, jaki plik binarny powinien uruchomić serwer. Tak więc starsze klienty SSH-1 SFTP mają sftp-servermocno zakodowane nazwy.
ForceCommand internal-sftppowinien osiągnąć to samo