it:server:sftp

SFTP

Přístup k filesystému lze zajistit přes SSH. Je třeba editovat soubor /etc/ssh/sshd_config a přidat řádky pro jednotlivé uživatele. Každý uživatel bude mít rootovskou složku dle cesty - nedostane se k ostatním souborům mimo jejich adresář.

Uživatel user1 se autentizuje pomoci certifikátů, takže není povolena autentizace heslem.

Oba uživatelé musí mít vytvořený účet.

# override default of no subsystems                  
Subsystem      sftp    /usr/lib/openssh/sftp-server 
 
 
Match User user1
        ChrootDirectory /home/user1
        ForceCommand internal-sftp
        AllowTcpForwarding no
        PasswordAuthentication no
 
Match User user2 212.4.2.2
        ChrootDirectory /home/user2
        ForceCommand internal-sftp
        AllowTcpForwarding no

Oba uživatelé musí mít vytvořený účet v Linuxu. Aby se nemohli přihlásit do systému, tak jim lze místo přihlašovacího bashe nastavit v souboru /etc/passwd nologin cestu:

user1:x:1003:1003::/home/user1:/usr/sbin/nologin
user2:x:1004:1004::/home/user2:/usr/sbin/nologin

Při konfiguraci jsem narazil na problém s právy. Nedařilo se mi připojit přes SFTP a v logu */var/log/auth* jsem se dočetl, že nejsou správně nastavena práva. Protože jsem použil chroot, tak adresář /home/user1 a adresář /home/user2 musí mít práva roota. A v tom adresáři musí být zase složky, do které může zapisovat konkrétní uživatel.

Pro prvního uživatele jsem to vyřešil tedy takto:

chown root:root /home/user1
mkdir /home/user1/upload
chown user1:user1 /home/user1/upload

Protože jsem konfiguroval službu v lokální síti, narazil jsem na problém SSL certifikátem. Na SFTP server jsem chtěl posílat data z IP kamery, ale bohužel kamera kontroluje certifikát a nemůže znát tento lokální certifikát od SSH serveru. A to byla příčina, proč mi u kamery SFTP server nefungoval, ale přes Filezillu nebo Krusader mi to fungovalo.

  • it/server/sftp.txt
  • Poslední úprava: 2023/06/06 20:18
  • autor: Petr Nosek