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.