One place for hosting & domains

      How To Enable SFTP Without Shell Access on Ubuntu 20.04


      SFTP stands for SSH File Transfer Protocol, and is a secure way to transfer files between machines using an encrypted SSH connection. Although similar in name, this is a different protocol than FTP (File Transfer Protocol), but SFTP is widely supported by modern FTP clients.

      SFTP is available by default with no additional configuration on all servers with SSH access enabled. Though it’s secure and fairly straightforward to use, one disadvantage of SFTP is that in a standard configuration, the SSH server grants file transfer access and terminal shell access to all users with an account on the system. In many cases, it is more secure to apply granular control over user permissions. For example, you may want to allow certain users to only perform file transfers, but prevent them from gaining terminal access to the server over SSH.

      In this tutorial, you’ll set up the SSH daemon to limit SFTP access to one directory with no SSH access allowed on a per-user basis.


      To follow this tutorial, you will need access to an Ubuntu 20.04 server. This server should have a non-root user with sudo privileges, as well as a firewall enabled. For help with setting this up, follow our Initial Server Setup Guide for Ubuntu 20.04.

      Step 1 — Creating a New User

      First, create a new user who will be granted only file transfer access to the server. Here, we’re using the username sammyfiles, but you can use any username you like:

      You’ll be prompted to create a password for the account, followed by some information about the user. The user information is optional, so you can press ENTER to leave those fields blank.

      You have now created a new user that will be granted access to the restricted directory. In the next step, you’ll create the directory for file transfers and set up the necessary permissions.

      Step 2 — Creating a Directory for File Transfers

      In order to restrict SFTP access to one directory, you first have to make sure the directory complies with the SSH server’s permissions requirements, which are very particular.

      Specifically, the directory itself and all directories before it in the filesystem tree must be owned by root and not writable by anyone else. Consequently, it’s not possible to give restricted access to a user’s home directory because home directories are owned by the user, not root.

      Note: Some versions of OpenSSH do not have such strict requirements for the directory structure and ownership, but most modern Linux distributions (including Ubuntu 20.04) do.

      There are a number of ways to work around this ownership issue. In this tutorial, you’ll create and use /var/sftp/uploads as the target upload directory. /var/sftp will be owned by root and will not be writable by other users; the subdirectory /var/sftp/uploads will be owned by sammyfiles, so that user will be able to upload files to it.

      First, create the directories:

      • sudo mkdir -p /var/sftp/uploads

      Set the owner of /var/sftp to root:

      • sudo chown root:root /var/sftp

      Give root write permissions to the same directory, and give other users only read and execute rights:

      Change the ownership on the uploads directory to the user you just created. The following command again uses the example user and group sammyfiles, so be sure to change this if you gave the user you created a different name:

      • sudo chown sammyfiles:sammyfiles /var/sftp/uploads

      Now that the directory structure is in place, you can configure the SSH server itself.

      Step 3 — Restricting Access to One Directory

      In this step, you’ll modify the SSH server configuration to disallow terminal access for sammyfiles but allow file transfer access.

      Open the SSH server configuration file using nano or your favorite text editor:

      • sudo nano /etc/ssh/sshd_config

      Scroll to the very bottom of the file and add the following configuration snippet:


      Match User sammyfiles
      ForceCommand internal-sftp
      PasswordAuthentication yes
      ChrootDirectory /var/sftp
      PermitTunnel no
      AllowAgentForwarding no
      AllowTcpForwarding no
      X11Forwarding no

      Here’s what each directive does:

      • Match User tells the SSH server to apply the following commands only to the specified user. Here, we specify sammyfiles. Again, make sure to update this with your own user’s name, if different.
      • ForceCommand internal-sftp forces the SSH server to run the SFTP server upon login, disallowing shell access.
      • PasswordAuthentication yes allows password authentication for this user.
      • ChrootDirectory /var/sftp/ ensures that the user will not be allowed access to anything beyond the /var/sftp directory.
      • AllowAgentForwarding no, AllowTcpForwarding no. and X11Forwarding no disables port forwarding, tunneling and X11 forwarding for this user, respectively.

      This set of commands, starting with Match User, can be copied and repeated for different users too. Make sure to modify the username in the Match User line accordingly.

      Note: You can omit the PasswordAuthentication yes line and set up SSH key access for increased security. Follow the Copying your Public SSH Key section of the SSH Essentials: Working with SSH Servers, Clients, and Keys tutorial to do so. Make sure to do this before you disable shell access for the user.

      In the next step, we’ll test the configuration by SSHing locally with password access, but if you set up SSH keys, you’ll need access to a computer with the user’s key pair.

      After adding these lines, save and close the file. If you’re using nano, you can do this by pressing CTRL + X, and then Y, and then ENTER.

      To apply the configuration changes, restart the service:

      • sudo systemctl restart sshd

      You have now configured the SSH server to restrict access to file transfer only for sammyfiles. The last step is testing the configuration to make sure it works as intended.

      Step 4 — Verifying the Configuration

      Let’s ensure that our new sammyfiles user can only transfer files. As mentioned previously, SFTP is used to transfer files between machines. You can verify this works by testing a transfer between your local machine and server.

      First, try logging into your server as the user you created in Step 1. Because of the settings you added to the SSH configuration file, this won’t be possible:

      • ssh sammyfiles@your_server_ip

      You’ll receive the following message before being returned to your original prompt:


      • This service allows sftp connections only.
      • Connection to your_server_ip closed.

      This means that sammyfiles can no longer access the server shell using SSH.

      Next, verify if the user can successfully access SFTP for file transfer:

      • sftp sammyfiles@your_server_ip

      Instead of an error message, this command will generate a successful login message with an interactive prompt:


      • Connected to your_server_ip
      • sftp>

      You can list the directory contents using ls in the prompt:

      This will show the uploads directory that was created in the previous step and return you to the sftp> prompt:



      To verify that the user is indeed restricted to this directory and cannot access any directory before it, you can try changing the directory to the previous one:

      This command will not give an error but will list the directory contents as before with no change, proving that the user was not able to switch to the parent directory.

      You have now verified that the restricted configuration works as intended. The newly created sammyfiles user can access the server only using the SFTP protocol for file transfer and has no ability to access the full shell.


      You’ve restricted a user to SFTP-only access to a single directory on a server without full shell access. While this tutorial uses only one directory and one user for brevity, you can extend this example to multiple users and multiple directories.

      The SSH server allows even more complex configuration schemes, including limiting access to groups or multiple users at once, or even limited access to certain IP addresses. You can find examples of additional configuration options and explanations of possible directives in the OpenSSH Cookbook. If you run into any issues with SSH, you can debug and fix them with this troubleshooting SSH series.

      Source link

      Nutzung von SFTP zur sicheren Übertragung von Dateien mit einem Remote-Server


      FTP oder „File Transfer Protocol“ (Dateiübertragungsprotokoll) war eine beliebte unverschlüsselte Methode zur Übertragung von Dateien zwischen zwei Remote-Systemen.

      SFTP, das für SSH File Transfer Protocol (SSH-Dateiübertragungsprotokoll) oder Secure File Transfer Protocol (sicheres Dateiübertragungsprotokoll) steht, ist ein separates Protokoll, das mit SSH verpackt ist und auf ähnliche Weise funktioniert, jedoch über eine sichere Verbindung. Der Vorteil ist die Fähigkeit zur Nutzung einer sicheren Verbindung zur Übertragung von Dateien und zum Durchlaufen des Dateisystems sowohl auf dem lokalen als auch auf dem Remote-System.

      In fast allen Fällen ist SFTP aufgrund der zugrunde liegenden Sicherheitsfunktionen und der Fähigkeit, eine SSH-Verbindung einzubinden, gegenüber FTP vorzuziehen. FTP ist ein unsicheres Protokoll, das nur in begrenzten Fällen oder auf Netzwerken verwendet werden sollte, denen Sie vertrauen.

      Obwohl SFTP in viele grafische Tools integriert ist, wird in diesem Leitfaden die Verwendung über die interaktive Befehlszeilenschnittstelle demonstriert.

      Verbindung mit SFTP

      Standardmäßig verwendet SFTP das SSH-Protokoll, um eine sichere Verbindung zu authentifizieren und zu erstellen. Aus diesem Grund sind die gleichen Authentifizierungsmethoden verfügbar, die auch in SSH vorhanden sind.

      Obwohl Passwörter einfach zu verwenden und standardmäßig eingerichtet sind, empfehlen wir Ihnen, SSH-Schlüssel zu erstellen und Ihren öffentlichen Schlüssel auf jedes System zu übertragen, auf das Sie zugreifen müssen. Dies ist wesentlich sicherer und kann Ihnen auf lange Sicht Zeit sparen.

      Bitte sehen Sie sich diesen Leitfaden zur Einrichtung von SSH-Schlüsseln für den Zugriff auf Ihren Server an, wenn Sie dies noch nicht getan haben.

      Wenn Sie über SSH eine Verbindung zu dem Rechner herstellen können, haben Sie alle notwendigen Voraussetzungen erfüllt, um SFTP zur Verwaltung von Dateien zu verwenden. Testen Sie den SSH-Zugriff mit dem folgenden Befehl:

      • ssh sammy@your_server_ip_or_remote_hostname

      Wenn dies funktioniert, geben Sie zum Verlassen Folgendes ein:

      Jetzt können wir eine SFTP-Sitzung aufbauen, indem wir den folgenden Befehl ausgeben:

      • sftp sammy@your_server_ip_or_remote_hostname

      Sie stellen eine Verbindung zum Remote-System her, und Ihre Eingabeaufforderung ändert sich in eine SFTP-Eingabeaufforderung.

      Wenn Sie an einem benutzerdefinierten SSH-Port arbeiten (nicht dem Standard-Port 22), können Sie eine SFTP-Sitzung wie folgt öffnen:

      • sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

      Dadurch werden Sie über den von Ihnen angegebenen Port mit dem Remote-System verbunden.

      Hilfe in SFTP erhalten

      Der nützlichste Befehl, den Sie zuerst lernen sollten, ist der Hilfebefehl. Damit haben Sie Zugriff auf eine Zusammenfassung der SFTP-Hilfe. Sie können sie aufrufen, indem Sie einen der folgenden Befehle in die Eingabeaufforderung eingeben:


      Damit wird eine Liste der verfügbaren Befehle angezeigt:


      Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown 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 [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' . . .

      Einige der angezeigten Befehle werden wir in den folgenden Abschnitten näher betrachten.

      Wir können durch die Dateihierarchie des Remote-Systems navigieren, indem wir eine Reihe von Befehlen verwenden, die ähnlich wie ihre Shell-Gegenstücke funktionieren.

      Orientieren wir uns zunächst, indem wir herausfinden, in welchem Verzeichnis wir uns derzeit im Remote-System befinden. Genau wie in einer typischen Shell-Sitzung können wir Folgendes eingeben, um das aktuelle Verzeichnis zu erhalten:


      Remote working directory: /home/demouser

      Wir können den Inhalt des aktuellen Verzeichnisses des Remote-Systems mit einem anderen vertrauten Befehl anzeigen:


      Summary.txt info.html temp.txt testDirectory

      Beachten Sie, dass die Befehle innerhalb der SFTP-Schnittstelle nicht die normalen Shell-Befehle sind und nicht so funktionsreich sind, aber sie implementieren einige der wichtigeren optionalen Flags:


      drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .

      Um in ein anderes Verzeichnis zu gelangen, können wir diesen Befehl ausgeben:

      Wir können nun das Remote-Dateisystem durchlaufen, aber was, wenn wir auf unser lokales Dateisystem zugreifen müssen? Wir können Befehle auf das lokale Dateisystem richten, indem wir ihnen ein l für lokal voranstellen.

      Alle bisher besprochenen Befehle haben lokale Entsprechungen. Wir können das lokale Arbeitsverzeichnis ausgeben:


      Local working directory: /Users/demouser

      Wir können den Inhalt des aktuellen Verzeichnisses auf dem lokalen Rechner auflisten:


      Desktop local.txt test.html Documents analysis.rtf zebra.html

      Wir können auch das Verzeichnis wechseln, mit dem wir auf dem lokalen System interagieren möchten:

      Übertragung von Dateien mit SFTP

      Das Navigieren der Remote- und lokalen Dateisysteme ist nur von begrenztem Nutzen, wenn keine Möglichkeit besteht, Dateien zwischen den beiden Systemen zu übertragen.

      Übertragung von Remote-Dateien auf das lokale System

      Wenn wir Dateien von unserem Remote-Host herunterladen möchten, können wir dies tun, indem wir den folgenden Befehl ausgeben:


      Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01

      Wie Sie sehen können, lädt der Befehl get eine Remote-Datei in eine Datei mit dem gleichen Namen auf dem lokalen Dateisystem herunter.

      Wir können die Remote-Datei unter einem anderen Namen kopieren, indem wir den Namen anschließend angeben:

      Der Befehl get nimmt auch einige Options-Flags an. Beispielsweise können wir ein Verzeichnis und seinen gesamten Inhalt kopieren, indem wir die Option rekursiv angeben:

      Wir können SFTP anweisen, die entsprechenden Berechtigungen und Zugriffszeiten beizubehalten, indem wir das Flag -P oder -p verwenden:

      Übertragung lokaler Dateien auf das Remote-System

      Die Übertragung von Dateien auf das Remote-System lässt sich ebenso einfach mit dem entsprechend benannten Befehl „put“ erreichen:


      Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00

      Die gleichen Flags, die mit get funktionieren, gelten auch für put. Um also ein vollständiges lokales Verzeichnis zu kopieren, können Sie ausgeben:

      Anmerkung: In den Versionen von OpenSSH, die mit aktuellen Ubuntu-Versionen (zumindest 14.04 bis 15.10) ausgeliefert werden, gibt es derzeit einen Fehler, der verhindert, dass der obige Befehl korrekt funktioniert. Wenn Sie den obigen Befehl ausgeben, um Inhalte auf einen Server zu übertragen, der die fehlerhafte Version von OpenSSH verwendet, wird der folgende Fehler ausgegeben: Couldn't canonicalise: No such file or directory (Keine Kanonisierung möglich: keine solche Datei oder solches Verzeichnis).

      Um dieses Problem zu umgehen, erstellen Sie zuerst das Zielverzeichnis auf der Remote-Seite, indem Sie mkdir localDirectory eingeben. Anschließend sollte der obige Befehl ohne Fehler abschließen.

      Ein bekanntes Tool, das beim Herunterladen und Hochladen von Dateien nützlich ist, ist der Befehl df, der ähnlich wie die Kommandozeilenversion funktioniert. Damit können Sie überprüfen, ob Sie über ausreichend Speicherplatz verfügen, um die gewünschten Übertragungen durchzuführen:


      Size Used Avail (root) %Capacity 19.9GB 1016MB 17.9GB 18.9GB 4%

      Bitte beachten Sie, dass es keine lokale Variante dieses Befehls gibt, jedoch können wir dies umgehen, indem wir den Befehl ! eingeben.

      Der Befehl ! versetzt uns in eine lokale Shell, in der wir jeden auf unserem lokalen System verfügbaren Befehl ausführen können. Wir können die Festplattennutzung überprüfen, indem wir Folgendes eingeben:

      und dann


      Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home

      Jeder andere lokale Befehl wird wie erwartet funktionieren. Um zu Ihrer SFTP-Sitzung zurückzukehren, geben Sie Folgendes ein:

      Sie sollten nun wieder die SFTP-Eingabeaufforderung sehen.

      Einfache Dateimanipulation mit SFTP

      Mit SFTP können Sie die Art der grundlegenden Dateiwartung durchführen, die bei der Arbeit mit Dateihierarchien nützlich ist.

      Beispielsweise können Sie den Eigentümer einer Datei auf dem Remote-System ändern:

      Beachten Sie, dass der SFTP-Befehl im Gegensatz zum Systembefehl chmod keine Benutzernamen akzeptiert, sondern stattdessen UIDs verwendet. Leider gibt es keine einfache Möglichkeit, die entsprechende UID innerhalb der SFTP-Schnittstelle zu kennen.

      Eine aufwändige Umgehung könnte erreicht werden mit:

      • get /etc/passwd
      • !less passwd


      root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . .

      Beachten Sie, dass wir den Befehl ! nicht für sich allein gegeben haben, sondern als Präfix für einen lokalen Shell-Befehl verwendet haben. Dies funktioniert, um jeden Befehl auszuführen, der auf unserem lokalen Rechner verfügbar ist, und hätte zuvor mit dem lokalen Befehl df verwendet werden können.

      Die UID wird in der dritten Spalte der Datei stehen, die durch Doppelpunkt abgegrenzt ist.

      Auf ähnliche Weise können wir den Gruppeneigentümer einer Datei ändern mit:

      Auch hier gibt es keine einfache Möglichkeit, eine Auflistung der Gruppen des Remote-Systems zu erhalten. Wir können dies mit dem folgenden Befehl umgehen:

      • get /etc/group
      • !less group


      root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .

      Die dritte Spalte enthält die ID der Gruppe, die mit dem Namen in der ersten Spalte verknüpft ist. Das ist, wonach wir suchen.

      Zum Glück funktioniert der Befehl chmod wie erwartet auf dem Remote-Dateisystem:


      Changing mode on /home/demouser/publicFile

      Es gibt keinen Befehl zur Manipulation lokaler Dateiberechtigungen, aber Sie können die lokale umask festlegen, sodass alle auf das lokale System kopierten Dateien die entsprechenden Berechtigungen aufweisen.

      Das kann mit dem Befehl lumask geschehen:


      Local umask: 022

      Jetzt haben alle regulären Dateien, die heruntergeladen werden (solange das Flag -p nicht verwendet wird) 644 Berechtigungen.

      Mit SFTP können Sie Verzeichnisse sowohl auf lokalen als auch auf Remote-Systemen mit lmkdir bzw. mkdir erstellen. Diese funktionieren wie erwartet.

      Der Rest der Dateibefehle zielt nur auf das Remote-Dateisystem ab:

      Diese Befehle replizieren das grundlegende Verhalten der Shell-Versionen. Wenn Sie diese Aktionen auf dem lokalen Dateisystem ausführen müssen, denken Sie daran, dass Sie durch Ausgabe des folgenden Befehls in eine Shell wechseln können:

      Oder führen Sie einen einzelnen Befehl auf dem lokalen System aus, indem Sie dem Befehl das ! voranstellen, wie hier:

      Wenn Sie mit Ihrer SFTP-Sitzung fertig sind, verwenden Sie exit oder bye, um die Verbindung zu schließen.


      Obwohl SFTP ein einfaches Tool ist, ist es sehr nützlich für die Verwaltung von Servern und die Übertragung von Dateien zwischen ihnen.

      Beispielsweise können Sie SFTP verwenden, um bestimmten Benutzern die Übertragung von Dateien ohne SSH-Zugriff zu ermöglichen. Weitere Informationen zu diesem Vorgang finden Sie in unserem Tutorial Aktivieren von SFTP ohne Shell-Zugriff.

      Wenn Sie gewohnt sind, FTP oder SCP für Ihre Übertragungen zu verwenden, ist SFTP eine gute Möglichkeit, die Stärken beider zu nutzen. Obwohl es nicht für jede Situation geeignet ist, ist es ein flexibles Tool, das Sie in Ihrem Repertoire haben sollten.

      Source link

      Cara Menggunakan SFTP untuk Mentransfer Berkas secara Aman dengan Server Jauh


      FTP, atau “File Transfer Protocol” adalah metode tidak terenkripsi yang populer untuk mentransfer berkas di antara dua sistem jauh.

      SFTP, yang merupakan singkatan SSH File Transfer Protocol, atau Secure File Transfer Protocol, adalah protokol terpisah yang dipaketkan dengan SSH yang bekerja dalam cara serupa tetapi melalui koneksi aman. Keuntungannya adalah kemampuan memanfaatkan koneksi aman untuk mentransfer berkas dan melintasi sistem berkas di sistem jauh dan lokal.

      Umumnya, SFTP lebih disukai daripada FTP karena fitur keamanan yang mendasari dan kemampuannya melakukan piggyback pada koneksi SSH. FTP adalah protokol tidak aman yang seharusnya hanya digunakan dalam kasus terbatas atau pada jaringan yang Anda percayai.

      Meskipun SFTP terintegrasi ke dalam banyak alat grafis, panduan ini akan memperagakan cara menggunakannya melalui antarmuka baris perintah interaktifnya.

      Cara Menghubungkan dengan SFTP

      Secara asali, SFTP menggunakan protokol SSH untuk mengautentikasi dan membuat koneksi aman. Karena ini, metode autentikasi yang sama tersedia di SSH.

      Meskipun kata sandi mudah digunakan dan disiapkan secara asali, kami menyarankan Anda membuat kunci SSH dan mentransfer kunci publik ke sistem yang perlu Anda akses. Ini jauh lebih aman dan dapat menghemat waktu dalam jangka panjang.

      Lihatlah panduan ini untuk menyiapkan kunci SSH guna mengakses server jika Anda belum melakukannya.

      Jika dapat menghubungkan ke mesin menggunakan SSH, berarti Anda telah menyelesaikan semua persyaratan menggunakan SFTP untuk mengelola berkas. Uji akses SSH dengan perintah berikut:

      • ssh sammy@your_server_ip_or_remote_hostname

      Jika berhasil, keluar kembali dengan mengetikkan:

      Sekarang kita dapat membuat sesi SFTP dengan mengeluarkan perintah berikut:

      • sftp sammy@your_server_ip_or_remote_hostname

      Anda akan menghubungkan sistem jauh dan prompt Anda akan berubah menjadi prompt SFTP.

      Jika Anda bekerja di porta SSH khusus (bukan porta asali 22), maka Anda dapat membuka sesi SFTP seperti berikut:

      • sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

      Ini akan menghubungkan Anda ke sistem jauh melalui porta yang ditentukan.

      Mendapatkan Bantuan di SFTP

      Perintah paling berguna untuk dipelajari terlebih dahulu adalah perintah help. Perintah ini memberi Anda akses ke ringkasan bantuan SFTP. Anda dapat memanggilnya dengan mengetikkan salah satu dari ini di prompt:


      Ini akan menampilkan daftar perintah yang tersedia:


      Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown 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 [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' . . .

      Kita akan mendalami beberapa perintah yang Anda lihat di bagian berikut.

      Menavigasi dengan SFTP

      Kita dapat menavigasi hierarki berkas sistem jauh menggunakan sejumlah perintah yang berfungsi mirip dengan padanan shell-nya.

      Pertama-tama, mari kita ketahui di direktori mana kita saat ini pada sistem jauh. Sama seperti dalam sesi shell pada umumnya, kita dapat mengetikkan yang berikut untuk mendapatkan direktori saat ini:


      Remote working directory: /home/demouser

      Kita dapat melihat isi direktori saat ini di sistem jauh dengan perintah lainnya yang sudah familier:


      Summary.txt info.html temp.txt testDirectory

      Perhatikan bahwa perintah dalam antar muka SFTP bukanlah perintah shell biasa dan tidak kaya fitur, tetapi perintah-perintah itu mengimplementasikan beberapa bendera opsional yang lebih penting:


      drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .

      Untuk mendapatkan direktori lainnya, kita dapat mengeluarkan perintah ini:

      Sekarang kita dapat melintasi sistem berkas jauh, tetapi bagaimana jika kita perlu mengakses sistem berkas lokal kita? Kita dapat mengarahkan perintah ke sistem berkas lokal dengan menambahkan l di awal untuk lokal.

      Semua perintah yang dibahas sejauh ini memiliki padanan lokal. Kita dapat mencetak direktori kerja lokal:


      Local working directory: /Users/demouser

      Kita dapat membuat daftar isi direktori saat ini pada mesin lokal:


      Desktop local.txt test.html Documents analysis.rtf zebra.html

      Kita juga dapat mengubah direktori yang ingin kita tangani di sistem lokal:

      Mentransfer Berkas dengan SFTP

      Menyusuri sistem berkas jauh dan lokal terbatas kegunaannya bila tidak dapat mentransfer berkas di antara kedua sistem.

      Mentransfer Berkas Jauh ke Sistem Lokal

      Jika ingin mengunduh berkas dari hos jauh, kita dapat melakukannya dengan mengeluarkan perintah berikut:


      Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01

      Seperti yang Anda lihat, secara asali, perintah get mengunduh berkas jauh ke berkas dengan nama yang sama di sistem berkas lokal.

      Kita dapat menyalin berkas jauh ke nama yang berbeda dengan menentukan namanya kemudian:

      Perintah get juga menggunakan beberapa bendera opsi. Misalnya, kita dapat menyalin direktori dan semua isinya dengan menentukan opsi rekursif:

      Kita dapat memberi tahu SFTP untuk mempertahankan izin dan waktu akses yang sesuai menggunakan bendera -P atau -p:

      Mentransfer Berkas Lokal ke Sistem Jauh

      Mentransfer berkas ke sistem jauh mudah dilakukan menggunakan perintah “put” dengan semestinya:


      Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00

      Bendera yang sama yang dapat digunakan pada get juga dapat digunakan pada put. Jadi, untuk menyalin seluruh direktori lokal, Anda dapat mengeluarkan:

      Catatan: Saat ini ada kutu di versi OpenSSH yang disertakan pada rilis Ubuntu saat ini (setidaknya 14.04 hingga 15.10) yang menghalangi pengoperasian perintah di atas dengan benar. Setelah mengeluarkan perintah di atas untuk mentransfer konten ke server menggunakan versi OpenSSH yang mengandung kutu, pesan kesalahan berikut akan diberikan: Couldn't canonicalise: No such file or directory.

      Untuk mengatasi masalah ini, buat direktori tujuan di sistem jauh terlebih dahulu dengan mengetikkan mkdir localDirectory. Setelah itu, perintah di atas akan dijalankan tanpa kesalahan.

      Satu alat yang telah dikenal yang berguna saat mengunduh dan mengunggah berkas adalah perintah df, yang fungsinya mirip dengan versinya di baris perintah. Dengan alat ini, Anda dapat memeriksa apakah cukup ruang untuk menyelesaikan transfer yang Anda inginkan:


      Size Used Avail (root) %Capacity 19.9GB 1016MB 17.9GB 18.9GB 4%

      Perhatikan, tidak ada variasi lokal perintah ini, tetapi kita dapat mengatasinya dengan mengeluarkan perintah !.

      Perintah ! menempatkan kita ke dalam shell lokal sehingga kita dapat menjalankan perintah apa pun yang tersedia di sistem lokal kita. Kita dapat memeriksa penggunaan diska dengan mengetikkan:



      Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home

      Perintah lokal lainnya akan berjalan sesuai harapan. Untuk kembali ke sesi SFTP Anda, ketikkan:

      Sekarang Anda akan melihat prompt SFTP dihasilkan.

      Manipulasi Berkas secara Sederhana dengan SFTP

      SFTP memungkinkan Anda melakukan pemeliharaan berkas dasar yang berguna saat menangani hierarki berkas.

      Misalnya, Anda dapat mengubah pemilik berkas di sistem jauh dengan:

      Perhatikan, tidak seperti perintah chmod sistem, perintah SFTP tidak menerima nama pengguna, melainkan menggunakan UID. Sayangnya, tidak ada cara mudah untuk mengetahui UID yang sesuai dari dalam antarmuka SFTP.

      Solusi terkait dapat dilakukan dengan:

      • get /etc/passwd
      • !less passwd


      root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . .

      Perhatikan, sebagai ganti memberikan perintah ! dengan sendirinya, kita menggunakannya sebagai awalan untuk perintah shell lokal. Cara ini berhasil untuk menjalankan perintah yang tersedia di mesin lokal kita dan dapat digunakan bersama perintah df lokal sebelumnya.

      UID akan berada di kolom ketiga berkas, seperti yang digambarkan melalui karakter titik dua.

      Demikian pula, kita dapat mengubah pemilik grup berkas dengan:

      Sekali lagi, tidak ada cara mudah untuk mendapatkan daftar grup sistem jauh. Kita dapat mengatasinya dengan perintah berikut:

      • get /etc/group
      • !less group


      root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .

      Kolom ketiga berisi ID grup yang dikaitkan dengan nama di kolom pertama. Inilah yang kita cari.

      Untungnya, perintah chmod berfungsi seperti yang diharapkan di sistem berkas jauh:


      Changing mode on /home/demouser/publicFile

      Tidak ada perintah untuk memanipulasi izin berkas lokal, tetapi Anda dapat mengatur umask lokal, sehingga berkas yang disalin ke sistem lokal akan memiliki izin yang sesuai.

      Hal itu dapat dilakukan dengan perintah lumask:


      Local umask: 022

      Sekarang semua berkas reguler yang diunduh (selama bendera -p tidak digunakan) akan memiliki 644 izin.

      SFTP memungkinkan Anda membuat direktori di sistem lokal maupun jauh masing-masing dengan lmkdir dan mkdir. Ini akan berhasil seperti yang diharapkan.

      Perintah berkas selebihnya hanya menargetkan sistem berkas jauh:

      Perintah ini menirukan perilaku dasar dari versi shell. Jika Anda perlu melakukan tindakan ini di sistem berkas lokal, ingatlah bahwa Anda dapat masuk ke shell dengan mengeluarkan perintah ini:

      Atau menjalankan perintah tunggal di sistem lokal dengan mengawali perintah itu menggunakan ! seperti ini:

      Bila Anda selesai dengan sesi SFTP, gunakan exit atau bye untuk menutup koneksi.


      Meskipun SFTP adalah alat sederhana, tetapi sangat berguna untuk administrasi server dan mentransfer berkas antar server.

      Misalnya, Anda dapat menggunakan SFTP untuk memungkinkan pengguna tertentu mentransfer berkas tanpa akses SSH. Untuk informasi lebih lanjut tentang proses ini, lihat tutorial kami tentang Cara Mengaktifkan SFTP Tanpa Akses Shell.

      Jika Anda biasa menggunakan FTP atau SCP untuk melakukan transfer, SFTP adalah cara yang tepat untuk memanfaatkan kekuatan keduanya. Walaupun tidak sesuai untuk setiap situasi, ini adalah alat fleksibel yang harus Anda gunakan dalam repertoar.

      Source link