sshpass: Alat Luar Biasa untuk Login SSH Non-Interaktif - Jangan Pernah Digunakan di Server Produksi


Dalam kebanyakan kasus, administrator sistem Linux login ke server Linux jarak jauh menggunakan SSH baik dengan memberikan kata sandi, atau login SSH tanpa kata sandi, atau otentikasi SSH berbasis kunci.

Bagaimana jika Anda ingin memberikan kata sandi bersama dengan nama pengguna ke prompt SSH itu sendiri? di sinilah sshpass hadir untuk menyelamatkan.

sshpass adalah alat baris perintah sederhana dan ringan yang memungkinkan kami memberikan kata sandi (otentikasi kata sandi non-interaktif) ke prompt perintah itu sendiri, sehingga skrip shell otomatis dapat dijalankan untuk mengambil cadangan melalui penjadwal cron.

ssh menggunakan akses TTY langsung untuk memastikan bahwa kata sandi benar-benar diberikan oleh pengguna keyboard interaktif. Sshpass menjalankan ssh dalam tty khusus, menyesatkannya sehingga percaya bahwa ia menerima kata sandi dari pengguna interaktif.

Penting: Menggunakan sshpass dianggap paling tidak aman, karena ini mengungkapkan sandi ke semua pengguna sistem pada baris perintah dengan sederhana perintah “ps”. Saya sangat merekomendasikan menggunakan otentikasi SSH Tanpa Kata Sandi.

Instal sshpass di Sistem Linux

Dalam sistem berbasis RedHat/CentOS, pertama-tama Anda harus mengaktifkan repositori Epel di sistem Anda untuk menginstalnya menggunakan perintah yum seperti yang ditunjukkan.

yum install sshpass
dnf install sshpass    [On Fedora 22+ versions]

Di Debian/Ubuntu dan turunannya, Anda dapat menginstalnya menggunakan perintah apt-get seperti yang ditunjukkan.

sudo apt-get install sshpass

Alternatifnya, Anda dapat menginstal dari sumber untuk mendapatkan sshpass versi terbaru, pertama-tama unduh kode sumbernya lalu ekstrak konten file tar dan instal seperti ini:

wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install 

Cara Menggunakan sshpass di Linux

sshpass digunakan bersama dengan ssh, Anda dapat melihat semua opsi penggunaan sshpass dengan deskripsi lengkap dengan mengeluarkan perintah di bawah ini:

sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used

Seperti yang saya sebutkan sebelumnya, sshpass lebih dapat diandalkan dan berguna untuk tujuan skrip, perhatikan contoh perintah di bawah.

Masuk ke server ssh Linux jarak jauh (10.42.0.1) dengan nama pengguna dan kata sandi dan periksa penggunaan disk sistem file dari sistem jarak jauh seperti yang ditunjukkan.

sshpass -p 'my_pass_here' ssh [email  'df -h' 

Penting: Di sini, kata sandi diberikan pada baris perintah yang praktis tidak aman dan tidak disarankan menggunakan opsi ini.

Namun, untuk mencegah sandi ditampilkan di layar, Anda dapat menggunakan tanda -e dan memasukkan sandi sebagai nilai variabel lingkungan SSHPASS seperti di bawah ini:

export SSHPASS='my_pass_here'
echo $SSHPASS
sshpass -e ssh [email  'df -h' 

Catatan: Dalam contoh di atas, variabel lingkungan SSHPASS hanya untuk tujuan sementara dan akan dihapus saat reboot.

Untuk menyetel variabel lingkungan SSHPASS secara permanen, buka file /etc/profile dan ketik pernyataan ekspor di awal file:

export SSHPASS='my_pass_here'

Simpan file dan keluar, lalu jalankan perintah di bawah ini untuk melakukan perubahan:

source /etc/profile 

Di sisi lain, Anda juga dapat menggunakan flag -f dan memasukkan kata sandi ke dalam file. Dengan cara ini, Anda dapat membaca kata sandi dari file sebagai berikut:

sshpass -f password_filename ssh [email  'df -h'

Anda juga dapat menggunakan sshpass untuk mentransfer file menggunakan scp atau membuat cadangan/sinkronisasi file melalui rsync menggunakan SSH seperti yang ditunjukkan:

------- Transfer Files Using SCP ------- 
scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html

------- Backup or Sync Files Using Rsync -------
rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/

Untuk penggunaan lebih lanjut, saya sarankan Anda membaca halaman manual sshpass, ketik:

man sshpass

Dalam artikel ini, kami menjelaskan sshpass sebuah alat sederhana yang memungkinkan autentikasi kata sandi non-interaktif. Meskipun alat ini mungkin berguna, sangat disarankan untuk menggunakan mekanisme otentikasi kunci publik ssh yang lebih aman.

Silakan tinggalkan pertanyaan atau komentar melalui bagian umpan balik di bawah untuk diskusi lebih lanjut.