SSH di Linux: login dengan kunci dan transfer scp serta sftp

Secure Shell (SSH) menyediakan login dan eksekusi perintah jarak jauh melalui koneksi terenkripsi. Alat OpenSSH juga mendukung transfer berkas dengan scp dan sftp. Verifikasi sidik jari kunci host server pada koneksi pertama, dan pertahankan cara login yang sudah berfungsi sampai autentikasi kunci benar-benar teruji.

Periksa mode berkas kunci privat melalui panduan izin berkas, serta selidiki batas waktu atau kegagalan resolusi nama melalui diagnosis jaringan. Pada Ubuntu, periksa aktivasi melalui soket selain layanannya dengan systemctl status ssh.service ssh.socket. Pemeriksaan itu tidak berarti kedua unit harus selalu aktif bersamaan.

Rujukan latihan konfigurasi adalah mesin virtual (VM) dengan instalasi biasa Ubuntu 26.04 LTS, yaitu rilis dengan dukungan jangka panjang, atau Rocky Linux seri 9. Konfigurasi layanan dan paket dapat berbeda pada kontainer, Windows Subsystem for Linux (WSL), serta rilis lain. Siapkan pemulihan melalui konsol dan catat versi lingkungan dengan mengikuti panduan persiapan mesin virtual berbahasa Inggris.

Memasang klien dan server pada tempat yang tepat

Komputer tempat Anda mengetik perintah adalah klien; mesin Linux yang dituju untuk login adalah server. Klien memerlukan alat ssh, scp, dan sftp; periksa versi klien dengan ssh -V. Server memerlukan alamat yang dapat dijangkau, akun pengguna yang benar-benar ada, layanan sshd, serta aturan jaringan yang mengizinkan port SSH sebenarnya. Jalankan hanya blok pemasangan yang sesuai distribusi server. Pada Ubuntu, apt update memperbarui informasi daftar paket.

Untuk server Ubuntu:

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

Untuk server Rocky Linux:

sudo dnf install openssh-server
sudo systemctl enable --now sshd

Ubuntu umumnya memakai nama layanan ssh, sedangkan Rocky Linux memakai sshd; periksa unit yang benar-benar terpasang. Firewall host, aturan keamanan cloud, dan penerusan port pada network address translation (NAT) merupakan pengaturan terpisah. Pertahankan sesi yang sudah terbuka dan siapkan pemulihan melalui konsol sebelum membatasi autentikasi atau mengubah port SSH pada server operasional.

Memverifikasi identitas server sebelum menerima kunci pertama

Dapatkan sidik jari kunci host melalui jalur yang sudah dipercaya, misalnya konsol server. Sidik jari adalah ringkasan pengenal kunci publik yang dipakai untuk membandingkan identitas. Jalankan perintah pertama berikut pada server, dan perintah kedua pada klien. Ganti user serta server.example dengan akun dan alamat yang sebenarnya; keduanya adalah nama pengganti untuk latihan. Jika Ed25519 tidak tersedia atau tidak diizinkan kebijakan kriptografi, verifikasi kunci host yang memang digunakan server.

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh user@server.example

Bandingkan sidik jari SHA256 yang ditampilkan klien dengan hasil dari jalur tepercaya sebelum menyetujuinya. Peringatan perubahan kunci host perlu diselidiki: penyebabnya bisa pemasangan ulang yang sah atau penyadapan koneksi. Jangan menghapus seluruh berkas known_hosts atau mematikan verifikasi untuk menghilangkan peringatan. Perbarui hanya entri terkait setelah penggantian yang sah dikonfirmasi.

Membuat pasangan kunci dan mendaftarkan kunci publik saja

ssh-keygen -t ed25519 -f ~/.ssh/linux-course-key
ssh-copy-id -i ~/.ssh/linux-course-key.pub user@server.example
ssh -i ~/.ssh/linux-course-key user@server.example

Jika pembuatan kunci meminta menimpa berkas yang sudah ada, hentikan dan pilih nama lain. Lindungi kunci privat dengan frasa sandi dan simpan pada klien; hanya kunci publik .pub yang dipasang pada server. Jika ssh-copy-id tidak tersedia, tambahkan satu baris kunci publik ke ~/.ssh/authorized_keys milik akun tujuan melalui cara yang disetujui. Izin yang umum adalah 700 untuk direktori .ssh dan 600 untuk authorized_keys, disertai kepemilikan yang benar.

Uji login dari terminal baru. Menyebut jalur kunci belum membuktikan kunci itu dipakai: kunci lain dari agen atau autentikasi sandi dapat berhasil sebagai pengganti. Jika diperlukan, periksa keluaran ssh -v -o IdentitiesOnly=yes -i ... untuk mengetahui metode yang berhasil. ... di sini harus diganti jalur kunci dan tujuan yang sesuai. IdentitiesOnly=yes membatasi identitas kunci yang ditawarkan, tetapi tidak dengan sendirinya menonaktifkan semua metode autentikasi lain. Gunakan jenis kunci yang didukung dan disetujui jika lingkungan menerapkan kebijakan kriptografi atau Federal Information Processing Standards (FIPS).

Mengirim dan mengambil berkas kecil dengan scp

printf "SSH transfer test\n" > transfer-test.txt
scp -i ~/.ssh/linux-course-key transfer-test.txt user@server.example:~/transfer-test.txt
scp -i ~/.ssh/linux-course-key user@server.example:~/transfer-test.txt ./transfer-returned.txt
cmp transfer-test.txt transfer-returned.txt

Jalankan contoh ini pada klien dengan akun latihan. Pastikan nama berkas sumber, berkas hasil unduhan lokal, dan nama tujuan jarak jauh belum dipakai karena pembuatan atau penyalinan dapat menimpanya. Jika cmp selesai tanpa keluaran dengan status keluar 0, isi berkas yang kembali sama dengan sumbernya. Periksa status tiap transfer sebelum membandingkan hasil; kegagalan unduhan tidak boleh dianggap berhasil hanya karena berkas lama masih ada.

Sejak OpenSSH 9.0, scp memakai protokol SFTP secara bawaan. SFTP menyediakan transfer berkas melalui SSH. Periksa kompatibilitas klien dan server lama, alih-alih menganggap semua versi menggunakan perilaku protokol SCP lama.

Menggunakan sftp interaktif dan port khusus

sftp -i ~/.ssh/linux-course-key user@server.example

Masukkan perintah berikut pada prompt sftp setelah koneksi berhasil, bukan pada shell biasa. pwd dan ls merujuk sisi jarak jauh, sedangkan lpwd dan lls merujuk sisi lokal. Periksa kedua lokasi sebelum mengunggah atau mengunduh. put mengunggah berkas lokal, get mengunduh berkas jarak jauh, dan bye menutup sesi.

pwd
lpwd
ls
put transfer-test.txt
get transfer-test.txt transfer-sftp.txt
bye

Untuk port 2222, ssh memakai -p 2222, sedangkan scp serta sftp memakai -P 2222 dengan huruf besar. Opsi itu memilih port koneksi klien; tidak mengubah port pendengar server. Jika koneksi ditolak, periksa layanan pendengar, port, dan kebijakan jaringan. Jika autentikasi gagal, periksa nama pengguna, kunci, serta izin. Keluaran rinci dapat memuat alamat dan jalur akun, sehingga perlu disamarkan sebelum dibagikan. Setelah latihan, bersihkan hanya berkas latihan dan pendaftaran kunci publik yang memang tidak lagi dibutuhkan.

Dokumentasi resmi