Secure Shell (SSH) adalah protokol jaringan kriptografi yang digunakan untuk koneksi terenkripsi antara klien dan server. SSH client membuat koneksi aman ke SSH server pada mesin jarak jauh. Koneksi terenkripsi dapat digunakan untuk menjalankan perintah di server, tunneling X11, port forwarding, dan banyak lagi.
Ada sejumlah SSH client yang tersedia secara gratis dan komersial, dengan OpenSSH menjadi klien yang paling banyak digunakan. Ini tersedia di semua platform, termasuk Linux, OpenBSD, Windows, macOS dan lainnya.
Pada artikel ini, kami akan menjelaskan cara menggunakan OpenSSH client (ssh
) di baris perintah untuk masuk ke mesin jarak jauh dan menjalankan perintah atau melakukan operasi lain.
Instal OpenSSH Client
Program OpenSSH client disebut ssh dan dapat dipanggil dari terminal. Paket OpenSSH client juga menyediakan utilitas SSH lain seperti scp
dan sftp
yang diinstal di samping perintah ssh.
Install OpenSSH Client di Linux
Klien OpenSSH sudah diinstal pada sebagian besar distribusi Linux secara default. Jika sistem Anda tidak ada ssh client, Anda dapat menginstalnya menggunakan package manager distribusi Anda.
Install OpenSSH di Ubuntu dan Debian
sudo apt update
sudo apt install openssh-client
Install OpenSSH pada CentOS dan Fedora
sudo dnf install openssh-clients
Install OpenSSH Client pada Windows 10
Sebagian besar user Windows menggunakan Putty untuk terhubung ke mesin jarak jauh melalui SSH. Namun, versi terbaru dari Windows 10 sudah terdapat OpenSSH client dan server. Kedua paket dapat diinstal melalui GUI atau PowerShell.
Untuk menemukan nama persis paket OpenSSH, ketikkan perintah berikut:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Perintah diatas akan mengembalikan output kurang lebih seperti ini:
Name : OpenSSH.Client~~~~0.0.1.0 State : NotPresent Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent
Setelah Anda tahu nama paket instal dengan jalankan:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Jika berhasil, hasilnya akan terlihat seperti ini:
Path : Online : True RestartNeeded : False
Instal OpenSSH Client pada macOS
macOS dikirimkan bersama OpenSSH client yang terinstal secara default.
Cara Menggunakan Perintah ssh
Persyaratan berikut harus dipenuhi untuk dapat masuk ke mesin jarak jauh melalui SSH:
- SSH Server harus dijalankan pada mesin jarak jauh.
- Port SSH harus terbuka di firewall mesin jarak jauh.
- Anda harus mengetahui nama user dan kata sandi akun jarak jauh. Akun harus memiliki hak istimewa yang tepat untuk login jarak jauh.
Sintaks dasar dari perintah ssh adalah sebagai berikut:
ssh [OPTIONS] [USER@]:HOST
Untuk menggunakan perintah ssh, buka Terminal atau PowerShell Anda dan ketik ssh
diikuti dengan nama host jarak jauh:
ssh ssh.linuxid.net
Saat Anda terhubung ke mesin jarak jauh melalui SSH untuk pertama kalinya, Anda akan melihat pesan seperti di bawah ini.
The authenticity of host 'ssh.linuxid.net (192.168.121.111)' can't be established. ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY. Are you sure you want to continue connecting (yes/no)?
Setiap host memiliki sidik jari unik yang disimpan dalam file ~/.ssh/known_hosts
Ketik yes
untuk menyimpan sidik jari jarak jauh, dan Anda akan diminta memasukkan kata sandi.
Warning: Permanently added 'ssh.linuxid.net' (ECDSA) to the list of known hosts. [email protected]'s password:
Setelah Anda memasukkan kata sandi, Anda akan masuk ke mesin jarak jauh.
Ketika nama user tidak diberikan, perintah ssh menggunakan username yang login pada sistem lokal.
Untuk masuk sebagai pengguna yang berbeda, tentukan nama pengguna dan host dalam format berikut:
ssh username@hostname
Nama pengguna juga dapat ditentukan dengan opsi -l
:
ssh -l username hostname
Secara default, ketika tidak ada port yang diberikan, SSH client akan mencoba untuk terhubung ke server jauh pada port 22. Pada beberapa server, administrator mengubah port SSH default untuk menambahkan lapisan keamanan tambahan ke server dengan mengurangi risiko serangan otomatis.
Untuk terhubung pada port non-default, gunakan opsi -p
untuk menentukan port:
ssh -p 15522 username@hostname
Jika Anda mengalami masalah otentikasi atau koneksi, gunakan opsi -v
untuk memberitahu ssh
untuk mencetak pesan debug:
ssh -v username@hostname
Untuk meningkatkan tingkat verbositas, gunakan -vv
atau -vvv
.
Perintah ssh
menerima sejumlah opsi. Untuk daftar lengkap semua opsi, baca halaman manual ssh dengan mengetikkan man ssh
di terminal Anda.
File Konfigurasi SSH
Jika Anda terhubung ke beberapa sistem jarak jauh melalui SSH setiap hari, pasti akan merepotkan jika harus mengingat semua alamat IP jarak jauh, nama pengguna yang berbeda, port non-standar, dan berbagai opsi baris perintah sulit,dan lain sebagainya.
OpenSSH client membaca opsi yang diatur dalam file konfigurasi per-pengguna (~/.ssh/config
). Dalam file ini, Anda dapat menyimpan opsi SSH yang berbeda untuk setiap mesin jarak jauh yang Anda sambungkan.
Contoh konfigurasi SSH ditunjukkan di bawah ini:
Host dev HostName dev.linuxid.net User rudi Port 41422
Ketika Anda memanggil klien ssh dengan mengetikkan ssh dev
, perintah akan membaca file ~/.ssh/config
dan menggunakan detail koneksi yang ditentukan untuk host dev. Dalam contoh ini, mengetik perintah ssh dev
setara dengan yang berikut:
ssh -p 41422 [email protected]
Untuk informasi lebih lanjut, periksa artikel kami tentang file konfigurasi SSH.
Otentikasi Public Key
Protokol SSH mendukung berbagai mekanisme otentikasi.
Mekanisme otentikasi berbasis public key memungkinkan Anda untuk masuk ke server jarak jauh tanpa harus mengetikkan kata sandi Anda.
Metode ini bekerja dengan menghasilkan sepasang kunci kriptografi yang digunakan untuk otentikasi. Kunci pribadi (private key) disimpan pada perangkat klien, dan kunci publik (public key) ditransfer ke setiap server jarak jauh yang ingin Anda masuki. Server jarak jauh harus dikonfigurasi untuk menerima otentikasi berbasis key.
Jika Anda belum memiliki SSH key pair di mesin lokal Anda, Anda dapat membuatnya dengan mengetik:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Anda akan diminta mengetikkan kata sandi yang aman. Apakah Anda ingin menggunakan frasa sandi, itu terserah Anda.
Setelah Anda memiliki pasangan kunci Anda, salin kunci publik ke server jarak jauh:
ssh-copy-id username@hostname
Masukkan kata sandi pengguna jarak jauh, dan kunci publik akan ditambahkan ke file authorized_keys
pengguna jarak jauh.
Setelah kunci diunggah, Anda dapat masuk ke server jarak jauh tanpa diminta kata sandi.
Dengan menetapkan otentikasi berbasis key, Anda dapat menyederhanakan proses login dan meningkatkan keamanan server secara keseluruhan.
Port Forwarding
SSH tunneling atau port forwarding adalah metode untuk membuat koneksi SSH terenkripsi antara klien dan mesin server melalui mana port layanan dapat di-relay.
SSH forwarding berguna untuk mengangkut data jaringan layanan yang menggunakan protokol yang tidak terenkripsi, seperti VNC atau FTP, mengakses konten yang dibatasi secara geografis atau mem-bypass firewall. Pada dasarnya, Anda dapat meneruskan port TCP apa pun dan menyalurkan lalu lintas melalui koneksi SSH yang aman.
Ada tiga jenis SSH port forwarding:
Local port forwarding
Local port forwarding memungkinkan Anda untuk meneruskan koneksi dari host klien ke host SSH server dan kemudian ke port host tujuan.
Untuk membuat Local port forwarding berikan opsi -L
ke klien ssh
:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Opsi -f
memberitahu perintah ssh untuk dijalankan di latar belakang dan -N
tidak untuk mengeksekusi perintah jarak jauh.
Remote port forwarding
Remote port forwarding adalah kebalikan dari local port forwarding. Ini meneruskan port dari host server ke host klien dan kemudian ke port host tujuan.
Opsi -L
memberi tahu ssh untuk membuat remote port forwarding:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Dynamic port forwarding
Dynamic port forwarding membuat SOCKS proxy server yang memungkinkan komunikasi melintasi berbagai port.
Untuk membuat Dynamic port forwarding (SOCKS) berikan opsi -D
ke ssh client:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Untuk informasi lebih rinci dan instruksi langkah demi langkah, lihat artikel tentang Cara Mengatur SSH Tunneling (Port Forwarding).
Kesimpulan
Untuk terhubung ke server jarak jauh melalui SSH gunakan perintah ssh diikuti oleh nama pengguna dan hostname jarak jauh (ssh username@hostname
).
Mengetahui cara menggunakan perintah ssh sangat penting untuk mengelola server jarak jauh.