SSHFS (SSH File System) je implementace souborového systému v uživatelském prostoru (FUSE), který umožňuje klientům připojit vzdálený souborový systém přes SSH připojení. SSHFS používá protokol SSH File Transfer Protocol (SFTP) k připojení vzdáleného souborového systému ke klientskému počítači a spojení mezi klientem a serverem je zabezpečené a šifrované.
SSHFS lze použít jako alternativu k tradičnímu protokolu FTP. Ve výchozím nastavení je zabezpečený prostřednictvím připojení SSH a nejsou potřeba žádné další balíčky ani konfigurace. SSHFS pracuje s jednoduchou výchozí konfigurací SSH.
V tomto tutoriálu se naučíte, jak připojit vzdálený adresář bezpečným způsobem pomocí SSHFS mezi dva linuxové stroje (klient a server). Tato příručka také obsahuje, jak nastavit chroot na SSHFS, který zabrání uživatelům v přístupu k adresářům jiných uživatelů.
Předpoklady
Abyste mohli postupovat podle této příručky, budete potřebovat dva počítače se systémem Linux, klienta a server. Můžete použít libovolnou distribuci Linuxu a ujistěte se, že na serveru je nainstalován server OpenSSH a že máte uživatele bez oprávnění root s právy sudo root.
Instalace SSHFS do místního počítače
Ve výchozím nastavení SSHFS balíčky jsou dostupné ve většině distribucí Linuxu, včetně Debian/Ubuntu, RHEL/CentOS/Rocky a ArchLinux/Manjaro. Můžete jej snadno nainstalovat pomocí správce systémových balíčků. V této části nainstalujete SSHFS na místní/klientský počítač.
Nejprve aktualizujte svůj seznam indexů balíčků spuštěním následujícího příkazu.
# pro Debian/Ubuntu
aktualizace sudo apt
# pro RHEL/CentOS/RockyLinux
kontrolní aktualizace sudo dnf
# pro ArchLinux /Manjaro
sudo pacman -Syu
Po aktualizaci indexu balíčků nainstalujte balíček SSHFS pomocí správce balíčků, jak je uvedeno níže. V distribucích Debian a Archlinux je balíček pojmenován jako 'sshfs ', ale v distribuci založené na RHEL se balíček nazývá 'fuse-sshfs '.
# Pro Debian/Ubuntu
sudo apt nainstalujte sshfs
# Pro RHEL/CentOS/RockyLinux
sudo dnf nainstalujte fuse-sshfs
# Pro ArchLinux/Manjaro
sudo pacman -S sshfs
Nyní jste dokončili instalaci balíčku SSHFS na váš místní počítač. Dále se naučíte základní příkaz pro připojení a odpojení vzdáleného adresáře/oddílu k místnímu počítači pomocí příkazu SSHFS.
Základní:Připojení a odpojení pomocí SSHFS
Než začnete s příkazem SSHFS, ujistěte se, že máte linuxový server s nainstalovaným OpenSSH povoleným nad ním. Pro autentizaci uživatele na serveru můžete použít ověřování na základě hesla SSH nebo ověřování na základě klíče SSH. Můžete však vzít v úvahu použití ověřování pomocí klíče SSH, které je bezpečnější než ověřování pomocí hesla.
V této části se naučíte základní příkaz 'sshfs' pro připojení vzdáleného adresáře/oddílu ze serveru na místní/klientský počítač. Také se dozvíte, jak odpojit sshfs z místního počítače.
1. Základní příkaz 'sshfs ' pro připojení adresáře k místnímu počítači pomocí protokolu SSH je níže.
sshfs [e-mail chráněný]:/remote/directory /local/directory
V praxi připojte vzdálený adresář '/srv/data ' ze serveru '172.16.1.10 ' do adresáře místního počítače '~/data '. Tento příklad používá SSH uživatele 'johndoe'.
sshfs [e-mail chráněný]:/srv/data ~/data
Nyní budete vyzváni k ověření heslem, pokud pro své SSH používáte ověřování založené na hesle.
Pro ověření spusťte příkaz 'ls' do adresáře '~/data ' na místním počítači.
ls -lah ~/data
Zobrazí se seznam souborů ze vzdáleného serveru na vašem místním počítači.
2. Chcete-li nyní odpojit vzdálený adresář od místního počítače, spusťte příkaz 'fusermount ' jak je uvedeno níže. Tento příkaz se používá k připojení a odpojení souborových systémů FUSE.
fusermount -u ~/data
3. Další příklad 'sshfs ' příkaz, který by vás mohl zajímat.
Příkaz 'sshfs' s možností ladění '-d '. Kdykoli se dostanete do potíží s příkazem 'sshfs', použijte další možnost '-d' pro zobrazení všech ladicích zpráv při navazování připojení k serveru.
sshfs [e-mail chráněný]:/remote/directory /local/directory -d
Nyní, pokud provozujete server s nestandardním portem SSH, můžete přidat možnost '-p' následovaný vaším portem SSH.
sshfs [e-mail chráněný]:/remote/directory /local/directory -C -p 2222
Možnost '-C ' povolí kompresi, ekvivalentní volbě '-o komprese=ano' v příkazu ssh.
Pro úplnou referenci můžete použít volbu '--help' nebo pomocí manuálové stránky SSHFS.
sshfs --help
man sshfs
Nastavení Chrootu na SSHFS
V této části se dozvíte, jak povolit chroot na SSHFS, čehož lze dosáhnout konfigurací serveru SSH a určením uživatele a adresáře. Prostředí chroot omezí přístup k adresáři, ale váš uživatel může stále číst a zapisovat do adresáře mount.
1. Nejprve pro svého uživatele vytvoříte nový chroot adresář a povolíte přístup pro čtení a zápis. V této příručce vytvoříte nový sdílený adresář '/srv/shared' a poté vytvoříte nový domovský adresář a datový adresář pro každého uživatele.
Spuštěním následujícího příkazu vytvořte nový hlavní sdílený adresář '/srv/shared' a změnit vlastnictví na uživatele a skupinu 'root '.
mkdir -p /srv/shared
sudo chown -R root:root /srv/shared
2. Nyní vytvořte další adresář pro každého uživatele pod '/srv/shared' adresář. A nezapomeňte změnit vlastnictví tohoto adresáře na uživatele a skupinu 'root '.
mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe
3. Dále vytvořte 'data ' adresář v domovském adresáři uživatele '/srv/shared/johndoe '. Poté změňte vlastnictví tohoto adresáře na uživatele 'root “ a skupina „johndoe '. Nakonec povolte skupinu 'johndoe ' pro čtení a zápis do tohoto adresáře.
mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data
Nyní můžete připojit vzdálený adresář '/data ', ale je ekvivalentní adresáři '/srv/shared/johndoe/data' na serveru.
4. Po vytvoření chroot adresáře pro vašeho uživatele budete muset upravit konfiguraci SSH '/etc/ssh/sshd_config'. Upravte jej pomocí nano nebo vašeho oblíbeného textového editoru.
sudo nano /etc/ssh/sshd_config
Přidejte do souboru následující řádky.
Subsystém sftp internal-sftp
Match User johndoe
ChrootDirectory /srv/shared/%u
ForceCommand internal-sftp
AllowTcpForwarding no /> č. 1 >Konfigurace 'internal-sftp ' umožní SSH fungovat také jako SFTP server. Poté definujte 'ChrootDirectory ' pro uživatele 'johndoe ' na '/srv/shared/%u ' adresář. '%u ' znamená jako uživatelské jméno.
Uložte a zavřete soubor.
5. Dále spusťte následující příkaz pro ověření konfigurace SSH a ujistěte se, že nedochází k chybám syntaxe. Poté restartujte službu SSH a použijte novou konfiguraci.
sudo sshd -t
sudo systemctl restart sshd6. Nyní se vraťte na klientský/místní počítač a připojte vzdálený adresář do prostředí chroot. Měli byste použít adresář '/data' namísto adresáře s úplnou cestou '/srv/shared/johndoe/data'. A máte oprávnění číst, zapisovat a spouštět do adresáře 'data'.
sshfs [e-mail chráněný]:/data ~/dataChcete-li ověřit přístup pro zápis, vytvořte na klientském počítači nový soubor pomocí následujícího příkazu.
cd ~/data
echo "Tento soubor z klientského počítače">> other-file.md
Nyní se vraťte na server a přejděte do adresáře '/srv/shared/johndoe/data ', zkontrolujte dostupný soubor v tomto adresáři.
cd /srv/shared/johndoe/data/
ls
cat other-file.mdUvidíte soubor, který jste právě vytvořili z klientského počítače.
V této sekci jste vytvořili adresář chroot pro uživatele SSHFS a nakonfigurovali službu SSH pro povolení chroot.
Odstraňování problémů
Pokud se při připojení SSHFS zobrazí chyba, můžete potíže s připojením vyřešit pomocí následujících způsobů.
Můžete použít režim ladění s volbou '-d' . S touto volbou uvidíte protokoly vašeho připojení na vašem shellovém terminálu.
Spusťte 'sshfs ' s režimem ladění, jak je uvedeno níže.
sshfs [e-mail chráněný]:/data ~/mnt -dDalším způsobem, který můžete vyzkoušet, je zkontrolovat protokol SSH na vašem serveru. Před použitím příkazu 'sshfs' otevřete nový terminál a připojte se k serveru, poté spusťte 'tail ' ke kontrole služby protokolu SSH.
Na systému založeném na Ubuntu/Debianu je protokol SSH dostupný na adrese '/var/log/auth.log '. A pro systém založený na RHEL/CentOS je protokol SSH dostupný na adrese '/var/log/secure' .
# Pro Ubuntu/Debian
tail -f /var/log/auth.log
# Pro RHEL/CentOS
tail -f /var/log/secureZávěr
gratuluji! Nyní jste se naučili, jak používat SSHFS k připojení vzdáleného adresáře ze serveru na váš místní počítač. Také jste se naučili, jak nastavit prostředí chroot na SSHFS a jak řešit problémy s připojením SSHFS.
Jak spravovat stav Terraform v kbelíku AWS S3 Jak automatizovat své zdroje AWS pomocí šablon CloudFormationLinux