Tutorial Membuat SSH File Transfer (SFTP) pada Ubuntu 18.04

Hi guys! :metal:
Pada kesempatan kali ini gw akan share tutorial membuat SSH File Transfer atau disingkat dengan SFTP. Langsung aja ke langkah-langkah peracikannya ya :hmm:

Step 1 - Buat akun pengguna (user account)
Pertama buka terminal, buat akun pengguna dengan nama sftpuser, trus ketik baris perintah dibawah ini:

$ sudo adduser --shell /bin/false sftpuser
$ sudo passwd sftpuser

Catatan: Perhatiin pada baris pertama diatas dalam membuat akun pengguna ada tambahan --shell /bin/false. Tujuan dipakenya flag tersebut agar pengguna tidak bisa melihat akar sistem atau root (/) directory yang sensitif. Misalnya directory /etc/passwd.

Step 2 - Membuat directory pengguna

$ sudo mkdir -p /home/sftpuser/files

Ganti kepemilikan sftpuser agar sftpuser bisa read dan write pada directory ini:

$ sudo chown sftpuser:sftpuser /home/sftpuser/files

Lalu ganti pemilik pengguna dan kepemilikan grup menjadi root. Pengguna root memiliki akses baca/tulis pada akses ini. Anggota grup dan akun lainnya hanya bisa membaca.

$ sudo chown root:root /home/sftpuser
$ sudo chmod 755 /home/sftpuser/files

Step 3 - Konfigurasi SSH untuk SFTP
Sekarang edit berkas konfigurasi SSH pada teks editor:

 $ sudo nano /etc/ssh/sshd_config 

Lalu tambahkan pengaturan pada diakhir berkas:

Match User sftpuser
   ForceCommand internal-sftp
   PasswordAuthentication yes
   ChrootDirectory /home/sftpuser
   PermitTunnel no
   AllowAgentForwarding no
   AllowTcpForwarding no
   X11Forwarding no

Simpan konfigurasi berkas tersebut dan restart SSH service.

$ sudo /etc/init.d/ssh restart

Step 4 - Menguji koneksi SFTP
Disini gw pake filezilla untuk menguji koneksi SFTP. Kalo buat akses command line di linux bisa pake command sftp

$ sftp sftpuser@localhost

Connecting to localhost...
sftpuser@localhost password:
sftp>

Karena account ini dikonfigurasi hanya untuk sambungan SFTP. Jadi jika ada pengguna mencoba untuk menghubungkan melalui SSH akan terputus segera setelah otentikasi berhasil. Pengguna akan mendapatkan pesan di bawah ini:

$ ssh sftpuser@localhost

sftpuser@localhost password:
This service allows sftp connections only.
Connection to localhost closed.

Sekian tutorial dari gw. Semoga bermanfaat :kalem:

Referensi: https://tecadmin.net/create-sftp-only-user-centos/

1 Like

Penjelasannya mantap :mantap:
Mungkin gue sedikit tambahin.

Hampir sama dengan /bin/nologin, /bin/false gunanya untuk langsung exit session kalau ada yg login shell.

dan sedikit koreksi:

Kalau settingnya di /home/sftpuser, config ChrootDirectory di sshd_config nya harus menyesuaikan juga ke /home/sftpuser

Ini config di atas untuk single user, kalau mau multi user bisa pake Match Group daripada Match User di sshd_config dan setting diubah misalnya ChrootDirectory /home/%u dan sesuaikan juga user dan group pas create user dan create folder perm.

Klo gue buat automated backup / sinkron lebih suka pake rsync + ssh :mantap:

2 Likes

Oh iya chrootdirectory nya ntar ane ralat, makasih om dah di koreksi. Kalo match group brarti buat group baru lagi om?

Itu klo add user tanpa argument -g primary group kan otomatis buat groupnya juga.
coba aja jalanin di cli id sftpuser nanti kan gidnya (primary groupnya) sftpuser.

Yap, persis apa yg dibilang @svcadm
Jd misalnya gue mau bikin semua user di group tertentu bisa login

#group khusus orang upload sftp
groupadd bokeper

# bikin user
useradd -g bokeper -s /bin/false ubuntux
chown root /home/ubuntux
chmod go-w /home/ubuntux
mkdir /home/ubuntux/files
chown ubuntux:bokeper /home/ubuntux/files
chmod ug+rwx /home/ubuntux/files

# bikin user bokeper yang lain
useradd -g bokeper -s /bin/false svcadm
chown root /home/svcadm
chmod go-w /home/svcadm
mkdir /home/svcadm/files
chown svcadm:bokeper /home/svcadm/files
chmod ug+rwx /home/svcadm/files

:ngacir: