Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Linux und Vernetzung Zuletzt aktualisiert: September 13, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

SFTP oder Secure File Transfer Protocol ist ein sicheres Fernübertragungsprogramm für Dateien, das auf dem File Transfer Protocol (FTP) basiert.

Der FTP-Verkehr ist unverschlüsselt und unsicher, weshalb er größtenteils durch SFTP ersetzt worden ist.

SFTP läuft standardmäßig über das SSH-Protokoll an TCP-Port 22 und bietet die gleichen Sicherheits- und Verschlüsselungsfunktionen wie SSH. Der standardmäßige SSH-Daemon, der als Teil des OpenSSH-Servers auf Linux-Systemen läuft, unterstützt standardmäßig die grundlegenden Funktionen des SFTP-Protokolls, obwohl es auch separate Software gibt, wie vsftpd die konfiguriert werden können, um zusätzliche Funktionen und Anpassungen zu erhalten.

In diesem Artikel wird die Verwendung von SFTP über die Befehlszeile behandelt. Ich werde ein Ubuntu-System verwenden, obwohl die hier aufgeführten Befehle auf jedem Linux-System mit sftp Kunde.

Bevor Sie sich mit den Befehlen befassen, sollten Sie wissen, dass SCP wird veraltet und als Alternative ist es gut, sich mit dem SFTP-Befehl vertraut zu machen. Mit SFTP können Sie so ziemlich alles tun, was Sie auch mit SCP tun können.

Kopieren von Dateien

SFTP kann als Ersatz verwendet werden für SCP (Secure Copy) für einige unterstützte Anwendungsfälle. Ein solcher Fall ist die Verwendung von SCP um Dateien in einem Zug von einem entfernten Server zu übertragen oder abzuholen.

Die Syntax für Hochladen unter Verwendung des SCP-Befehls geht folgendermaßen:

$ scp {local-path} {user}@{remote-host}:{remote-path}

Und für Herunterladen von wie diese:

$ scp {user}@{remote-host}:{remote-file-path} {local-path}

In ähnlicher Weise können wir Folgendes verwenden sftp Befehlssyntax, um Dateien auf einen entfernten Server hochzuladen:

$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'

Unten sehen Sie eine Demo, die zeigt Hochladen von Dateien mit sftp als Einzeiler:

$ sftp ftpuser@192.168.1.231:/home/ftpuser/remote_test_dir <<< $'put /home/abhisheknair/new_file'
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Changing to: /home/ftpuser/remote_test_dir
sftp> put /home/abhisheknair/new_file
Uploading /home/abhisheknair/new_file to /home/ftpuser/remote_test_dir/new_file
/home/abhisheknair/new_file                                                           100%    9     7.2KB/s   00:00
$

An herunterladen eine Datei von einem entfernten Server, verwenden Sie die folgende Befehlssyntax:

$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}

Hier ist eine Demonstration des Herunterladens einer Datei in einer Zeile mit sftp:

$ sftp ftpuser@192.168.1.231:/home/ftpuser/new_file1 /home/abhisheknair/new_local_dir
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Fetching /home/ftpuser/new_file1 to /home/abhisheknair/new_local_dir/new_file1
/home/ftpuser/new_file1                                                               100%   12     3.6KB/s   00:00
$

Sie können auch den SSH-Schlüssel austauschen für die passwortlose Authentifizierung.

Verbinden mit einem SFTP-Server

Um eine SFTP-Verbindung zu initiieren, verwenden Sie sftp mit einem Benutzernamen und dem Namen oder der IP des entfernten Hosts. Der Standard-TCP-Port 22 sollte geöffnet sein, damit dies funktioniert, oder Sie geben den Port explizit mit -oPort Flagge.

Ich stelle eine Verbindung zu einem SFTP-Server mit der IP 192.168.1.231. Wenn Sie zum ersten Mal eine Verbindung zu einem SFTP-Server herstellen, werden Sie wie bei SSH aufgefordert, den Fingerabdruck des Servers zu bestätigen. Nach der Bestätigung durch Eingabe von 'ja' wird die Verbindung hergestellt und das Passwort des Benutzers abgefragt.

Bei einer erfolgreichen Verbindung wird Folgendes angezeigt sftp> prompt.

$ sftp ftpuser@192.168.1.231
The authenticity of host '192.168.1.231 (192.168.1.231)' can't be established.
ECDSA key fingerprint is SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.231' (ECDSA) to the list of known hosts.
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
sftp>

Version prüfen

Sie können die SFTP-Version überprüfen, indem Sie version Befehl bei sftp prompt.

sftp> version
SFTP protocol version 3
sftp>

Hilfe bekommen

Um Hilfe zu den verfügbaren Befehlen und der Syntax für SFTP zu erhalten, verwenden Sie '?' oder 'Hilfe‘.

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
sftp>

Arbeitsverzeichnis anzeigen

Wenn Sie mit einem entfernten Server verbunden sind, können Sie sich das aktuelle Arbeitsverzeichnis des entfernten Systems mit pwd Befehl.

sftp> pwd
Remote working directory: /home/ftpuser
sftp>

Um das aktuelle Arbeitsverzeichnis des lokalen Systems anzuzeigen, verwenden Sie lpwd Befehl.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp>

Dateien auflisten

Sie können die Dateien im entfernten Arbeitsverzeichnis mit ls Befehl.

sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Um Dateien im lokalen Arbeitsverzeichnis aufzulisten, verwenden Sie lls Befehl.

sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

Umschalten von Verzeichnissen

Das Umschalten des entfernten Arbeitsverzeichnisses kann mit cd Befehl. Siehe Beispiel unten:

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> cd remote_test_dir
sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp>

Um das lokale Arbeitsverzeichnis zu wechseln, verwenden Sie lcd Befehl. Nachfolgend ein einfaches Beispiel, das die Verwendung von lcd.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lcd testdir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp>

Dateien hochladen

Um eine einzelne Datei hochzuladen, verwenden Sie put Befehl. Sehen Sie, wie ich lokal hochlade Datei1 zum entfernten Arbeitsverzeichnis mit put Befehl. Ich kann es überprüfen, indem ich ls Befehl, der den Inhalt des entfernten Arbeitsverzeichnisses ausgibt.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> put file1
Uploading file1 to /home/ftpuser/file1
file1                                                                                                                                                                          100%    6     6.0KB/s   00:00
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Um mehrere Dateien auf einmal hochzuladen, können wir Folgendes verwenden mput Befehl wie unten gezeigt. Ich verwende mput mit einem Muster eines regulären Ausdrucks Datei[23] die im Wesentlichen Folgendes hochlädt Datei2 und Datei3 und überspringt Datei1 da es bereits im vorherigen Schritt hochgeladen wurde. Sie können einen beliebigen Platzhalter oder regulären Ausdruck verwenden mit mput.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> mput file[23]
Uploading file2 to /home/ftpuser/file2
file2                                                                                                                                                                          100%    6     6.5KB/s   00:00
Uploading file3 to /home/ftpuser/file3
file3                                                                                                                                                                          100%    6     5.3KB/s   00:00
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Dateien herunterladen

Eine einzelne Datei mit SFTP kann heruntergeladen werden mit get Befehl. Hier ist ein Beispiel, bei dem ich Folgendes heruntergeladen habe entfernte_datei4 mit sftp:

sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file4
sftp> lls
file4
sftp> get remote_file4
Fetching /home/ftpuser/remote_test_dir/remote_file4 to remote_file4
/home/ftpuser/remote_test_dir/remote_file4                                                                                                                                     100%   13     5.2KB/s   00:00
sftp> lls
file4  remote_file4
sftp>

Um mehrere Dateien herunterzuladen, verwenden Sie <strong>mget</strong> Befehl. Ich lade hier alle Dateien herunter, die dem Muster remote_file* im entfernten Arbeitsverzeichnis in mein lokales Arbeitsverzeichnis. Ich verwende schließlich <strong>lls</strong> um die heruntergeladenen Dateien zu sehen.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
file4  remote_file4
sftp> mget remote_file*
Fetching /home/ftpuser/remote_file1 to remote_file1
/home/ftpuser/remote_file1                                                                                                                                                     100%   12     5.9KB/s   00:00
Fetching /home/ftpuser/remote_file2 to remote_file2
/home/ftpuser/remote_file2                                                                                                                                                     100%   13     5.8KB/s   00:00
Fetching /home/ftpuser/remote_file3 to remote_file3
/home/ftpuser/remote_file3                                                                                                                                                     100%   13     7.3KB/s   00:00
sftp> lls
file4  remote_file1  remote_file2  remote_file3  remote_file4
sftp>

Verzeichnis erstellen

Ein neues Verzeichnis kann auf einem entfernten Server mit mkdir Befehl.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> mkdir new_dir
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Wenn Sie ein neues Verzeichnis im aktuellen Arbeitsverzeichnis des lokalen Systems von der sftp-Eingabeaufforderung aus erstellen möchten, verwenden Sie analog dazu lmkdir Befehl.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lmkdir new_local_dir
sftp> lls
bin  file1  file2  file3  lib  new_local_dir  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

Verzeichnis entfernen

Ein leeres entferntes Verzeichnis kann entfernt werden mit rmdir Befehl. Beachten Sie, dass Sie eine Fehlermeldung erhalten, wenn die Datei nicht leer ist.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rmdir new_dir
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Datei entfernen

Eine entfernte Datei kann entfernt werden mit rm Befehl.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rm remote_file3
Removing /home/ftpuser/remote_file3
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp>

Datei umbenennen

Eine entfernte Datei kann auch einfach umbenannt werden mit rename Befehl.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp> rename remote_file1 new_file1
sftp> ls
file1            file2            file3            new_file1        remote_file2     remote_test_dir
sftp>

Verwendung des Dateisystems

Um Statistiken für das aktuelle Verzeichnis oder Dateisystem, das "path" enthält, anzuzeigen, verwenden Sie df Befehl. Wir können den -h Flagge, um die Statistiken in einem für den Menschen lesbaren Format anzuzeigen. Beachten Sie, dass sich die angezeigten Statistiken auf das jeweilige Dateisystem des entfernten SFTP-Servers beziehen und nicht auf das Dateisystem des lokalen Rechners.

sftp> df
        Size         Used        Avail       (root)    %Capacity
    17811456      1845472     15965984     15965984          10%
sftp> df -h
    Size     Used    Avail   (root)    %Capacity
  17.0GB    1.8GB   15.2GB   15.2GB          10%
sftp>

SFTP-Sitzung beenden

Um die SFTP-Sitzung zu beenden, verwenden Sie entweder bye, exit, oder quit Befehl. Nach dem Beenden von SFTP kehren Sie zur Eingabeaufforderung Ihres Betriebssystems zurück.

sftp> exit
$

Schlussfolgerung

SFTP ist eine der besten verfügbaren Optionen, die sowohl sicher als auch einfach zu verwenden ist. Es bietet sowohl CLI- als auch GUI-Funktionen und wird von verschiedenen Plattformen unterstützt. Siehe sftp Manpage für weitere Informationen.

$ man sftp

Wenn Sie mehr erfahren möchten, schauen Sie sich diese Seite an Udemy Linux Mastery Kurs.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zu Linux
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder