FTP
Das File Transfer Protocol ist ein Standardkommunikationsprotokoll, das für die Übertragung von Computerdateien von einem Server zu einem Client in einem Computernetzwerk (einschließlich Internet) verwendet wird. FTP basiert auf einer Client-Server-Modellarchitektur mit separaten Steuerungs- und Datenverbindungen zwischen dem Client und dem Server.
FTP war schon immer beliebt, um große Dateien zwischen Systemen zu speichern oder zu verschieben. Dateien können einem zentralen Server hinzugefügt werden, und Benutzer, die darauf zugreifen möchten, können von dort darauf zugreifen.
SSH
SFTP zielt darauf ab, eine verbesserte Sicherheit durch Tunneling mit Secure Shell 2 (SSH2), einem sicheren Tunneling-Protokoll, bereitzustellen. Es emuliert eine FTP-Verbindung und bietet einen Firewall-freundlichen und verschlüsselten Kanal für Dateiübertragungen über TCP-Port 22.
SSH bietet verbesserte Sicherheit, da die gesamte Dateiübertragungssitzung, einschließlich aller Sitzungssteuerungsbefehle, jederzeit und nur vollständig verschlüsselt ist erfordern, dass ein einzelner Port auf Ihrer Firewall geöffnet werden muss, im Gegensatz zu den zwei Ports, die für FTP- und SSL-Verbindungen geöffnet werden müssen.
Als zusätzliche Funktion komprimiert Secure FTP auch alle Daten während der Übertragung, was zu schnelleren Dateiübertragungen führen kann.
Verwandte Inhalte
- Arbeiten mit dem SFTP-Client unter Linux – 10 sftp-Befehle
- So richten Sie einen SFTP-Server auf Debian 11 Server ein
- Dateien vom SFTP-Server mit einem Python-Skript herunterladen
- Auflisten, Hochladen und Herunterladen von Dateien von einem SFTP-Server mit Golang
- So richten Sie einen SFTP-Server auf OpenSUSE Leap 15.3 Server ein
- So richten Sie einen SFTP-Server auf CentOS 8 /RHEL 8 Server ein
Mit dem SFTP-Server in Ubuntu 20.04 loslegen
Diese Anleitung führt Sie durch den Prozess der Installation und Einrichtung des SFTP-Servers in Ubuntu 20.04. Wir werden diese Schritte durchlaufen:
- Installieren des
sftp
undssh
Software in Ubuntu - SFTP-Benutzer und -Gruppe erstellen
- SSH-Dienst konfigurieren
- Verbindung zum Server über das Terminal herstellen – Linux-Befehlszeile
1. Installieren der ssh-Software in Ubuntu
Wir brauchen die Software, die den ssh
bereitstellt und sftp
Serversoftware in unserem Ubuntu
Stellen Sie sicher, dass Ihr Computer aktualisiert ist:
sudo apt update
sudo apt upgrade -y
Seit sftp
ist abhängig von ssh
, müssen wir entweder SSH oder OpenSSH installieren, wenn keines davon bereits auf Ihrem Computer installiert ist.
Installieren Sie ssh
Dämon:
sudo apt install ssh
Ausgabe
$ sudo apt install ssh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libllvm11 libxdamage1
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
ssh
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,084 B of archives.
After this operation, 120 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports focal-security/main arm64 ssh all 1:8.2p1-4ubuntu0.2 [5,084 B]
Fetched 5,084 B in 0s (26.8 kB/s)
Selecting previously unselected package ssh.
(Reading database ... 104454 files and directories currently installed.)
Preparing to unpack .../ssh_1%3a8.2p1-4ubuntu0.2_all.deb ...
Unpacking ssh (1:8.2p1-4ubuntu0.2) ...
Setting up ssh (1:8.2p1-4ubuntu0.2) ...
2. SFTP-Benutzer und -Gruppe erstellen
Wir müssen einen Benutzer und eine Gruppe erstellen, die sich beim SFTP-Server anmelden.
- Erstellen Sie eine Gruppe mit dem gewünschten Namen. Ich werde
sftpgroup1
verwendensudo addgroup sftpgroup1
Ausgabe:
# sudo addgroup sftpgroup1
Adding group 'sftpgroup1' (GID 1002) ...
Done.
- Erstellen Sie einen Benutzer mit dem gewünschten Namen und fügen Sie ihn der von uns erstellten Gruppe hinzu. Ich werde
sftpuser1
verwenden für den Benutzer.sudo useradd -m sftpuser1 -g sftpgroup1
- Fügen Sie dem neuen SFTP-Benutzer
sudo passwd sftpuser1
Ausgabe:
# sudo passwd sftpuser1
New password:
Retype new password:
passwd: password updated successfully
- Gewähren Sie dem neuen SFTP-Benutzer mit diesem Befehl vollständigen Zugriff auf sein neues Home-Verzeichnis:
sudo chmod 700 /home/sftpuser1/
SSH-Dienst konfigurieren
Sie müssen den ssh-Dienst so konfigurieren, dass er sftp-Datenverkehr akzeptiert. Fügen Sie die folgenden Konfigurationen zur ssh-Konfigurationsdatei hinzu, die sich hier befindet /etc/ssh/sshd_config
:
Verwenden Sie in Ihrem Terminal diesen Befehl, um die Konfigurationsdatei mit vim zu öffnen:
sudo vim /etc/ssh/sshd_config
Fügen Sie nun diesen Inhalt am Ende der Datei hinzu:
Match group sftpgroup1
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Die obigen Konfigurationen sollen Benutzern in der Gruppe sftpgroup1 (Match group sftpgroup1
) über das SFTP auf ihre Home-Verzeichnisse zugreifen und diese verwenden, während jeder andere normale SSH-Zugriff auf diese Dateien verhindert wird.
Speichern und schließen Sie die SSHD-Konfigurationsdatei.
Starten Sie den SSH-Dienst neu, um vorherige Änderungen zu übernehmen.
sudo systemctl restart ssh
4. Verbindung zum Server über das Terminal herstellen – Linux-Befehlszeile
Sie können das Befehlszeilenterminal verwenden, um Ihre Anmeldung beim SFTP zu testen. Dies kann sogar lokal auf dem sftp-Server erfolgen.
Dies ist das Format des Login-Befehls:
sftp [user]@[host]
Verbinden wir uns mit unserem Server. Ihr SFTP-Benutzername und Ihr Passwort werden benötigt.
sftp [email protected]
Ausgabe:
$ sftp [email protected]
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:99KvuL95zO2CQbC8X0Re/Q+cYrJgqQgzpf1leemnjmY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
Connected to 127.0.0.1.
sftp>
Dadurch werden Sie beim Server angemeldet. Das Standardverzeichnis ist /home
dir im ChrootDirectory /home
angegeben Direktive in den ssh-Serverkonfigurationen.
Grundlegende sftp-Befehle
Version prüfen:
sftp> version
SFTP protocol version 3
sftp>
Remote-Arbeitsverzeichnis anzeigen
Wenn Sie das aktuelle Arbeitsverzeichnis auf dem Remote-Server überprüfen müssen, wird die Datei pwd
Befehl ist praktisch:
sftp> pwd
Remote working directory: /sftpuser1
sftp>
Arbeitsverzeichnis des lokalen Computers anzeigen
Um das aktuelle Arbeitsverzeichnis des lokalen Systems anzuzeigen, verwenden Sie lpwd
Befehl.
sftp> lpwd
Local working directory: /home/ubuntu
sftp>
Der erstellte Benutzer hat nur Zugriff auf sein Verzeichnis. Wechseln wir mit dem folgenden Befehl in dieses Verzeichnis:
sftp> cd sftpuser1
sftp>
Wechseln Sie in das Home-Verzeichnis des SFTP-Benutzers und versuchen Sie, wie folgt ein neues Verzeichnis zu erstellen:
sftp> ls
sftpuser1 ubuntu
sftp> cd sftpuser1
sftp> ls
sftp> mkdir datadir
sftp> ls
datadir
Dateien hochladen
Vom Lokalen aus
Laden Sie Dateien mit dieser Befehlssyntax auf einen Remote-Server hoch:
$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'
Beispiel:
$ sftp [email protected]:/sftpuser1/ <<< $'put ./citizix.txt'
[email protected]'s password:
Connected to 127.0.0.1.
Changing to: /sftpuser1/
sftp> put ./citizix.txt
Uploading ./citizix.txt to /sftpuser1/citizix.txt
./citizix.txt
Über den sftp-Server
Verwenden Sie diese Befehle:ls
um Dateien aufzulisten, lls
für lokale Liste put
zum Hochladen von Dateien:
sftp>
sftp> pwd
Remote working directory: /sftpuser1/datadir
sftp> ls
sftp> lls
citizix.txt snap tmp
sftp> put citizix.txt
Uploading citizix.txt to /sftpuser1/datadir/citizix.txt
citizix.txt 100% 32 25.8KB/s 00:00
sftp> ls
citizix.txt
sftp>
Um mehrere Dateien auf einmal hochzuladen, können wir mput
verwenden Befehl wie im Beispiel unten. Sie können mput
verwenden mit regulären Ausdrücken wie data[23]
um data2
hochzuladen , data3
und ignorieren Sie data1
. Sie können einen beliebigen Platzhalter oder regulären Ausdruck mit mput
verwenden .
sftp>
sftp> pwd
Remote working directory: /sftpuser1/data
sftp> ls
sftp> lls
data1 data2 data3
sftp> mput data[23]
Uploading data2 to /sftpuser1/data/data2
data2 100% 0 0.0KB/s 00:00
Uploading data3 to /sftpuser1/data/data3
data3 100% 0 0.0KB/s 00:00
sftp> ls
data2 data3
Dateien herunterladen
Von der lokalen Maschine aus
Um eine Datei von einem Remote-Server herunterzuladen, verwenden Sie die folgende Befehlssyntax:
$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}
Hier ist eine Demo zum Herunterladen einer Datei in einer Zeile mit sftp:
# sftp [email protected]:/sftpuser1/citizix.txt .
[email protected]'s password:
Connected to 127.0.0.1.
Fetching /sftpuser1/citizix.txt to ./citizix.txt
/sftpuser1/citizix.txt 100% 32 26.7KB/s 00:00
Vom Remote-SFTP-Server aus
Laden Sie eine einzelne Datei mit get
vom Server herunter . Beispiel für das Herunterladen von data2
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> get data2
Fetching /sftpuser1/data/data2 to data2
sftp> lls
data2
sftp>
Verwenden Sie mget
um wie in diesem Beispiel mehrere Dateien herunterzuladen
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> mget data*
Fetching /sftpuser1/data/data2 to data2
Fetching /sftpuser1/data/data3 to data3
sftp> lls
data2 data3
sftp>
Verzeichnis erstellen und löschen
Verwenden Sie die Befehle mkdir
und rmdir
um Verzeichnisse zu erstellen und zu löschen
sftp>
sftp> ls
sftp> mkdir data
sftp> ls
data
sftp> rmdir data
sftp>
Dateien entfernen
Verwenden Sie den Befehl rm
um Dateien zu löschen
sftp> rm data*
Removing /sftpuser1/data/data2
Removing /sftpuser1/data/data3
sftp>
Dateien umbenennen
sftp>
sftp> ls
data3
sftp> rename data3 data_original
sftp> ls
data_original
sftp>
Überprüfen der Dateisystemnutzung
Zeigen Sie Statistiken für das aktuelle Verzeichnis oder Dateisystem an, das „Pfad“ enthält, verwenden Sie den Befehl df. Wir können das Flag -h verwenden, um Statistiken in einem für Menschen lesbaren Format anzuzeigen. Beachten Sie, dass die angezeigten Statistiken für das jeweilige Dateisystem des Remote-SFTP-Servers und nicht für das Dateisystem des lokalen Computers gelten.
sftp> df
Size Used Avail (root) %Capacity
29540600 5917856 22103188 23622744 20%
sftp> df -h
Size Used Avail (root) %Capacity
28.2GB 5.6GB 21.1GB 22.5GB 20%
Hilfe erhalten
Um Hilfe zu verfügbaren Befehlen und Syntax für SFTP zu erhalten, verwenden Sie „?“ oder „Hilfe“.
sftp> ?
Ausgabe:
sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Weitere Informationen finden Sie auf der sftp-Manpage.
$ man sftp
Verlassen Sie die SFTP-Sitzung
Abschließend können Sie den sftp mit bye
verlassen , exit
, oder exit
:
sftp> exit
$
Schlussfolgerung
In diesem Leitfaden haben wir es geschafft, einen sftp-Server einzurichten und grundlegende Operationen zu untersuchen, die auf dem Server ausgeführt werden können