OpenSSH: internal-sftp ve sftp-server arasındaki fark


81

SFTP'yi OpenSSH ile kurmanın neden ve ne zaman kullanılacağı için iki yol var? Aralarında fark var mı?

Birincisi OpenSSH’den bir lib kullanıyor ve ikincisi “dâhili kullan” diyor, yani OpenSSH de öyle mi?

Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Yanıtlar:


94

Hem sftp-serverve internal-sftpOpenSSH parçasıdır. sftp-serverbağımsız bir ikilidir. Başka bir işlem (tipik olarak ) yerine, dahili olarak SFTP sunucu kodunu kullanmayı internal-sftpsöyleyen bir yapılandırma anahtar sshdsözcüğüdür .sshdsftp-server


İşlevsel açıdan sftp-serverve internal-sftpneredeyse aynı. Aynı kaynak kodundan üretilirler.

Temel avantajı, direktifinternal-sftp ile birlikte kullanıldığında destek dosyaları gerektirmemesidir .ChrootDirectory

sshd_config(5)Man sayfasından alıntılar :

  • İçin Subsystemdirektifi :

    Komut sftp-serverSFTP dosya transferi alt sistemini uygular.

    Alternatif olarak, ad internal-sftpbir işlem içi SFTP sunucusu uygular. Bu ChrootDirectoryistemcilere farklı bir dosya sistemi kökü zorlamak için kullanarak yapılandırmaları kolaylaştırabilir .

  • İçin ForceCommanddirektifi :

    Komutunun belirtilmesi internal-sftp, kullanıldığında destek dosyası gerektirmeyen işlem içi SFTP sunucusunun kullanımını zorlar ChrootDirectory.

  • İçin ChrootDirectorydirektifi :

    ChrootDirectoryKullanıcının oturumunu desteklemek için gerekli dosyaları ve dizinleri içermelidir. Etkileşimli oturum için bu, en az bir, tipik olarak kabuk gerektirir shve temel /devgibi düğümleri null, zero, stdin, stdout, stderr, ve ttycihazlar. SFTP kullanan dosya aktarımı oturumları için, işlem içi sftp sunucusu kullanılıyorsa, ortamın ek bir yapılandırması gerekli değildir, ancak günlüğü kullanan oturumlar /dev/logbazı işletim sistemlerinde chroot dizininin içinde yer alabilir ( sftp-serverayrıntılar için).

Bunun bir başka avantajı, internal-sftpbunun için yeni bir alt işlem yürütmeye gerek olmadığından bir performanstır.


internal-sftpTek başına daha (? 2008 yılında OpenSSH 4.9p1) çok daha sonra eklendi sftp-serverikili, ama şimdi varsayılan olduğunu.

sftp-serverYeni kurulumlarda kullanmak için hiçbir neden olmadığına inanıyorum .


Gibi görünebilir sshdotomatik kullanabilirsiniz internal-sftpo karşılaştığında, sftp-serverişlevsellik aynıdır ve gibi internal-sftphatta yukarıdaki avantajları vardır. Ancak farklılıkların olduğu kenar vakaları vardır.

Birkaç örnek:

  • Yönetici, bazı kullanıcıların giriş yapmasını önlemek için bir giriş kabuğu yapılandırmasına güvenebilir. internal-sftpGiriş kabuğu artık dahil olmadığından, geçişi kısıtlamaya atlar.

  • Kullanılması sftp-serverikili sen gibi bazı kesmek kullanabilirsiniz (tek başına bir süreç olmak üzere) altında SFTP'yi çalışansudo .

  • SSH-1 için (eğer hala kimse kullanıyorsa), Subsystemdirektif hiç dahil değildir. SSH-1 kullanan bir SFTP istemcisi, sunucuya açıkça sunucunun hangi ikili dosyayı çalıştırması gerektiğini söyler. Yani eski SSH-1 SFTP istemcilerinin sftp-serveradı kodlanmış.



6

Bir yetkili_ anahtarını harici sftp sunucusuna kilitleyebilirsiniz.

command = "/ usr / libexec / openssh / sftp-server" ssh-rsa AAAA… == kullanici@host.com

Bunu yaptığınızda, kullanıcı sftp yapabilir, ancak scp veya ssh yapamaz:

$ sftp sunucusu: / etc / group / tmp
Ana bilgisayara bağlanıyor ...
/ Etc / group dizinine / tmp / group dizinine getiriliyor
/ etc / group 100% 870 0.9KB / s 00:00

Başka bir şey yapmaya çalışmak sadece asılacak:

$ scp host: / etc / group / tmp
2. sinyal tarafından öldürüldü.

$ ssh ana bilgisayar çalışma süresi
2. sinyal tarafından öldürüldü.

Ne yazık ki, sshd_config değiştirilmediği sürece bir anahtarın chroot'a kilitlenmesinin kolay bir yolu yoktur. Bu, bir kullanıcının sistem yöneticisine müdahale etmeden yapabileceği için çok iyi olurdu.


3
ForceCommand internal-sftpaynı elde etmeli
ptman

İşe sshfs host:/home/user/.ssh ~/hackmeyarar bir şey, daha sonra fikrinizi değiştirirseniz, chroot olmadan erişimi açmak için tüm bu ayarları düzenlemek için kullanabilmenizdir .
sh1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.