GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit MySecureShell SFTP Server na Ubuntu 18.04

V tomto článku vám vysvětlím, jak nastavit server SFTP pomocí MySecureShell na Ubuntu 18.04. SFTP je bezpečný způsob přenosu souborů pomocí šifrovaného připojení SSH. Ačkoli je široce podporován moderními FTP klienty, jde o zcela odlišný protokol než FTP (File Transfer Protocol).

Můžete se mě zeptat, proč MySecureShell místo tradičního FTP serveru. Zde je několik funkcí,

  • Zabezpečený přenos dat pomocí SSH
  • Není potřeba spravovat certifikáty SSL
  • Snadná instalace a konfigurace
  • Omezit využití šířky pásma
  • Omezení souborů a složek
  • Seznam řízení přístupu pomocí IP/uživatelského jména/skupin/virtuálního hostitele
  • Omezit uživatele, aby měli pouze sftp (přístup do prostředí je ve výchozím nastavení zakázán)
  • Vylepšený systém protokolování

Začněme tedy nejprve instalací, pro pochopení tohoto návodu stačí základní znalost FTP.

Instalace

Od ubuntu 15.04 a vyšší je MySecureShell k dispozici ve výchozích úložištích. Pro tuto instalaci používáme ubuntu 18.04. Stačí spustit níže uvedené příkazy a nainstalovat MySecureShell.

apt-get install mysecureshell

Pokud není k dispozici, postupujte podle kroků, ujistěte se, že všechny následující kroky jsou spuštěny jako uživatel root.

vim /etc/apt/sources.list

Přidejte následující 2 řádky,

deb http://mysecureshell.free.fr/repository/index.php/ubuntu testing main
deb-src http://mysecureshell.free.fr/repository/index.php/ubuntu testing main

Nyní přidejte klíč gpg jako,

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B; gpg --export E328F22B | apt-key add
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 7601D76CE328F22B: public key "MySecureShell repository " imported
gpg: Total number processed: 1
gpg:           	imported: 1
OK

Jakmile je úložiště přidáno, můžete začít s instalací

apt-get update
apt-get install mysecureshell

Nyní můžete službu spustit a zkontrolovat její stav

systemctl start mysecureshell.service
systemctl status mysecureshell.service

Ukázkový výstup

# systemctl start mysecureshell.service
root@li1004-153:~# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 4min 44s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.

# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 50min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.
#

Pomocí níže uvedených příkazů zastavte a restartujte službu mysecureshell

systemctl stop mysecureshell.service
systemctl restart mysecureshell.service

Vytvoření uživatele SFTP MySecureShell

Nejprve musíme najít umístění instalace MySecureShell,

whereis mysecureshell

Jak vidíte ve výstupu níže, instalační cesta mysecureshell je /usr/bin/mysecureshell.

mysecureshell: /usr/bin/mysecureshell /usr/share/man/man8/mysecureshell.8.gz

Nyní, po ověření cesty, můžete vytvořit uživatele

useradd -m -s /usr/bin/mysecureshell testsftpuser
passwd testsftpuser

Jak vidíte ve výše uvedeném příkazu, vytváříme uživatele a přiřazujeme cestu umístění mysecureshell. Také můžete stávajícím uživatelům přiřadit přístup a používání MySecureShell pomocí příkazu:

sudo usermod -s /usr/bin/mysecureshell testsftpuser

Připojení uživatele

Nyní se uživatel „testsftpuser“ může připojit k vašemu SFTP serveru z vašich klientů, jak je znázorněno níže, s vaší IP adresou počítače,

sftp [email protected]

IP vašeho zařízení

Connected to 45.33.54.153
sftp>

Ke svému SFTP serveru se také můžete přihlásit pomocí libovolného grafického klienta, jako je FileZilla z vašeho klientského systému.

Příkazy MySecureShell

MySecureShell má následující sadu příkazů pro správu vašeho SFTP serveru.

  • sftp-admin
  • sftp-kill
  • sftp-state
  • sftp-user
  • sftp-verif
  • sftp-who

sftp-admin

Tento příkaz umožňuje vzdálenou správu MySecureShell.

sftp-admin [ssh options] user@hostname

sftp-kill

Odpojí uživatele od serveru FTP.

sftp-kill testsftpuser
Kill testsftpuser on PID 1961
(Press "Y" when requested)

sftp-state

Zobrazit stav ftp serveru

# sftp-state

Ukázkový výstup

# sftp-state
Server is up
#

sftp-user

Tento příkaz vám umožňuje vytvořit uživatele SFTP, aniž byste zadali cestu, kterou jsme provedli dříve.

sftp-user create test

Seznam uživatelů SFTP

sftp-user list
test
testsftpuser

Příkaz smaže uživatelský test

sftp-user delete test

sftp-verif

Tento příkaz ověří a opraví problémy na serveru MySecureShell.

sftp-verif
################################################################################
MySecureShell Verification Tool
################################################################################

### Verifing file existance ###

/bin/MySecureShell                                                       [ OK ]
/bin/sftp-who                                                            [ OK ]
/bin/sftp-kill                                                           [ OK ]
/bin/sftp-state                                                          [ OK ]
/bin/sftp-admin                                                          [ OK ]
/bin/sftp-verif                                                          [ OK ]
/bin/sftp-user                                                           [ OK ]

### Verifing rights ###

Verifing file rights of /etc/ssh/sftp_config                             [ OK ]
Verifing file rights of /bin/sftp-who                                    [ OK ]
Verifing file rights of /bin/sftp-verif                                  [ OK ]
Verifing file rights of /bin/sftp-user                                   [ OK ]
Verifing file rights of /bin/sftp-kill                                   [ OK ]
Verifing file rights of /bin/sftp-state                                  [ OK ]
Verifing file rights of /bin/sftp-admin                                  [ OK ]
Verifing file rights of /bin/MySecureShell                               [ OK ]

### Verifing rotation logs ###
Rotation logs have been found                                            [ OK ]
### Verifing server status ###
Verifing server status (ONLINE)                                          [ OK ]
[...]

sftp-who

Tento příkaz vám řekne, kdo je aktuálně přihlášen k serveru FTP.

sftp-who
# sftp-who
--- 1 / 10 clients ---
Global used bandwidth : 0 bytes/s / 0 bytes/s
PID: 2207   Name: testsftpuser   IP: pa39-178-9-194.pa.nsw.optusnet.com.au
        Home: /home/testsftpuser
        Status: idle    Path: /
        File:
        Connected: 2018/05/18 01:30:50 [since 03mins 59s]
        Speed: Download: 0 bytes/s [5.00 kbytes/s]  Upload: 0 bytes/s [unlimited]
        Total: Download: 924 bytes   Upload: 100 bytes
#

Konfigurace

Hlavní konfigurační soubor MySecureShell je /etc/ssh/sftp_config. V konfiguračním souboru můžete nakonfigurovat šířku pásma pro nahrávání a stahování, uživatele chroot, maximální počet připojení atd. Tyto možnosti můžete nastavit na všechny nebo jen na určitou skupinu.

cat /etc/ssh/sftp_config

Výchozí značka

Výchozí značka se používá, pokud chcete použít konfiguraci pro všechny své uživatele

#Default rules for everybody
Default
        GlobalDownload          50k     #total speed download for all clients
                                        # o -> bytes   k -> kilo bytes   m -> mega bytes
        GlobalUpload            0       #total speed download for all clients (0 for unlimited)
        Download                5k      #limit speed download for each connection
        Upload                  0       #unlimit speed upload for each connection
        StayAtHome              true    #limit client to his home
        VirtualChroot           true    #fake a chroot to the home account
        LimitConnection         10      #max connection for the server sftp
        LimitConnectionByUser   1       #max connection for the account
        LimitConnectionByIP     2       #max connection by ip for the account
        Home                    /home/$USER     #overrite home of the user but if you want you can use
                                                #       environment variable (ie: Home /home/$USER)
        IdleTimeOut             5m      #(in second) deconnect client is idle too long time
        ResolveIP               true    #resolve ip to dns
        LogFile         /var/log/sftp-server_ftp.log
#       IgnoreHidden            true    #treat all hidden files as if they don't exist
#       DirFakeUser             true    #Hide real file/directory owner (just change displayed permissions)
#       DirFakeGroup            true    #Hide real file/directory group (just change displayed permissions)
#       DirFakeMode             0400    #Hide real file/directory rights (just change displayed permissions)
                                        #Add execution right for directory if read right is set
        HideNoAccess            true    #Hide file/directory which user has no access
#       MaxOpenFilesForUser     20      #limit user to open x files on same time
#       MaxWriteFilesForUser    10      #limit user to x upload on same time
#       MaxReadFilesForUser     10      #limit user to x download on same time
        DefaultRights           0640 0750       #Set default rights for new file and new directory
#       MinimumRights           0400 0700       #Set minimum rights for files and dirs

        ShowLinksAsLinks        false   #show links as their destinations
#       ConnectionMaxLife       1d      #limits connection lifetime to 1 day

#       Charset                 "ISO-8859-15"   #set charset of computer

Default

Poznámka: Protokoly nejsou standardně povoleny, umístění souboru protokolu můžete definovat v konfiguračním souboru.

Značka FileSpec

Značka FileSpec slouží k vytváření filtrů souborů a adresářů.

    # Only check against filenames/folder names only
FileSpec
    UseFullPath false

    # we can use multiple deny/allow directives for clarity
    Order DenyAllow
    Deny ".*.exe$"
    Deny ".*.sh$"
    Allow all
FileSpec

Uživatelská značka
Uživatelská značka definuje domovskou složku konkrétního uživatele

User tom 
Home /home/tom 
User

Značka VirtualHost

Značka VirtualHost může nastavit omezení na základě názvu virtuálního hostitele

    # Set home directory for this virtualhost
VirtualHost
    Home                    /var/www/html/www.mysftpsite.com
    # Set dedicated log file
    LogFile                 /var/log/sftp/www.mysftpsite.com
    # Override the maximum number of connection per user
    LimitConnectionByUser   5
VirtualHost

Instalace gFTP

Nyní zkusme instalaci gFTP na Ubuntu 18.04 podle níže uvedených kroků

sudo apt-get install gftp
  • Otevřete gFTP z Aplikace
  • Zadejte IP adresu serveru SFTP, číslo portu (výchozí/zadané při konfiguraci serveru), uživatelské jméno a heslo a použijte SSH2. Pro přihlášení stiskněte Enter
  • Pokud je pokus o přihlášení úspěšný. K SFTP jsme připojeni pomocí gFTP

To je prozatím vše. V této fázi budete mít funkční SFTP server. Doufám, že se vám tento tutoriál líbí a nechal jsem vám část konfigurace pro samoučení, laskavě okomentujte konfiguraci, kterou jste pro sebe udělali, což pomůže naší komunitě Linoxide učit se a růst. Děkuji.


Ubuntu
  1. Jak nastavit Rsyslog Server na Ubuntu 18.04 LTS

  2. Jak nastavit Zimbra Mail Server na Ubuntu 16

  3. Jak nastavit NTP server na Ubuntu a LinuxMint

  1. Jak nastavit SFTP server na Ubuntu 20.04 Focal Fossa Linux

  2. Jak nastavit server OpenVPN na Ubuntu 20.04

  3. Nastavení serveru Rsyslog na Ubuntu 20.04 – Jak na to?

  1. Jak nastavit SFTP server na Ubuntu 22.04 Jammy Jellyfish Linux

  2. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  3. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04