Dalam panduan ini, kita akan mempelajari apa itu utilitas sshpass, cara menginstal sshpass di sistem Linux dan FreeBSD, dan cara menggunakan sshpass untuk login SSH non-interaktif di skrip shell di Linux dan Unix.
Contents
PendahuluanApa itu sshpass?Instal sshpass di LinuxGunakan sshpass untuk login SSH Non-interaktifContoh 1 - Masuk ke sistem jarak jauh melalui ssh menggunakan sshpassSediakan Kata Sandi sebagai argumenBerikan Kata Sandi sebagai variabel LingkunganBaca Kata Sandi dari file teksEnkripsi File kata sandi menggunakan gpgContoh 2 - Transfer file menggunakan Rsync dengan sshpassExample 3 - Salin file menggunakan scp dengan sshpassExample 4 - SSH Password automation dengan sshpass di shell scriptsConclusionIntroduction
Sebagai administrator sistem Linux, Anda mungkin perlu mengakses mesin jarak jauh dan mentransfer file di antara mereka beberapa kali sehari. Salah satu cara untuk mengakses sistem jarak jauh adalah ssh. Dua metode otentikasi SSH yang paling umum digunakan adalah metode berbasis kata sandi dan metode otentikasi berbasis kunci.
Dalam metode otentikasi berbasis kata sandi, pengguna harus memasukkan kata sandi secara manual setiap kali melakukan otentikasi ke sistem jarak jauh. Metode ini agak membosankan dan juga tidak cocok untuk mengotomatisasi tugas melalui skrip. Pasalnya, pengguna masih harus memasukkan password secara manual setiap saat. Jadi jika Anda ingin menerapkan otentikasi SSH berbasis kata sandi dalam skrip, Anda mungkin ingin mencoba utilitas baris perintah sshpass.
Apa itu sshpass?
Utilitas sshpass dirancang untuk menjalankan ssh menggunakan mode otentikasi kata sandi interaktif keyboard, tetapi dalam mode non-interaktif cara. Sederhananya - sshpass menawarkan cara non-interaktif untuk mengotentikasi sesi SSH.
SSH menggunakan akses TTY langsung untuk memastikan bahwa kata sandi memang dikeluarkan oleh pengguna keyboard interaktif. Sshpass menjalankan ssh dalam tty khusus, membodohinya dengan menganggapnya mendapatkan kata sandi dari pengguna interaktif.
Instal sshpass di Linux
Utilitas sshpass tersedia di repositori default banyak distribusi Linux. Misalnya, Anda dapat menggunakan perintah berikut untuk menginstal sshpass di Arch Linux dan variannya seperti EndeavourOS, dan Manjaro Linux:
$ sudo pacman -S sshpass
Instal sshpass di Debian, Ubuntu dan turunannya:
$ sudo apt install sshpassInstallprens Fedora, RHEL, CentOS, AlmaLinux dan Rocky Linux:$ sudo dnf install sshpass
Install sshpass di openSUSE:$ sudo zypper install sshpass
Untuk Instal sshpass di FreeBSD, jalankan perintah berikut root user:nbs/security/pre
ort / && make install clean
# pkg install sshpassPerhatian: Semua metode ini sangat tidak aman. Semua pengguna sistem dapat melihat kata sandi dalam perintah hanya dengan mengeluarkan perintah ps. TIDAK DIREKOMENDASIKAN untuk menggunakan metode ini dalam produksi. Lebih baik menggunakan otentikasi SSH berbasis kunci sebagai gantinya.
Gunakan sshpass untuk login SSH non-interaktif
Mari kita beberapa contoh untuk memahami bagaimana kita dapat menggunakan sshpass untuk login SSH non-interaktif yaitu tanpa mengetikkan kata sandi SSH.
Contoh 1 - Masuk ke sistem jarak jauh melalui ssh menggunakan sshpass
Sshpass dapat menerima kata sandi sebagai argumen, atau membaca kata sandi melalui variabel lingkungan, atau membaca kata sandi dari file teks.
Mari kita lihat contoh untuk setiap metode.
Menyediakan Kata Sandi sebagai argumen
Untuk memberikan kata sandi sebagai argumen , gunakan opsi -p seperti di bawah ini.
$ sshpass -p ssh remoteuser@ip-address
Contoh:
$ sshpass -p almalinux ssh ostechnix@192.168.1.20
Disini,
-p almalinux - Memberikan kata sandi untuk ubuntu jarak jauh system.ostechnix@192.168.1.20 - Nama pengguna jarak jauh dan alamat IP.
Contoh keluaran:
Login terakhir: Sel 11 Okt 12:33:20 2022 dari 192.168.1.101 [ostechnix@Almalinux8CT ~]$
Anda juga dapat mengeksekusi koma menemukan sistem jarak jauh tanpa benar-benar masuk ke dalamnya juga.
$ sshpass -p almalinux ssh ostechnix@192.168.1.20 uname -a
Baca panduan berikut untuk mengetahui lebih lanjut tentang cara menjalankan perintah pada sistem Linux jarak jauh melalui SSH.
Execute Commands On Sistem Linux Jarak Jauh Melalui SSHMenyediakan Kata Sandi sebagai Variabel Lingkungan
Dalam metode ini, kami mendeklarasikan variabel lingkungan yang disebut SSHPASS dengan kata sandi sistem jarak jauh sebagai nilainya. Ini sedikit lebih baik daripada langsung memberikan kata sandi sebagai argumen.
Pertama, gunakan perintah ekspor untuk menyimpan kata sandi dalam variabel lingkungan yang disebut SSHPASS seperti di bawah ini:
$ export SSHPASS=almalinux
Dan kemudian kami memberikan kata sandi dengan tanda -e seperti di bawah ini:
$ sshpass -e ssh ostechnix@192.168.1.20
Anda juga dapat menggabungkan kedua perintah dan menjalankannya sebagai satu perintah seperti di bawah ini.
$ SSHPASS=almalinux sshpass -e ssh ostechnix@192.168.1.20
Metode ini juga memaparkan kata sandi ke riwayat file dan semua pengguna dapat melihatnya menggunakan perintah history. Untuk melindungi pengguna agar tidak melihat kata sandi, cukup hapus riwayat bash.
Baca Kata Sandi dari file teks Tambahkan kata sandi dalam file teks bernama mypassword.txt dengan perintah echo:
$ echo "almalinux"> mypassword.txt
Amankan file kata sandi menggunakan perintah chmod :
$ chmod 0400 mypassword.txt
Sekarang, berikan file password ke sshpass dengan flag -f seperti di bawah ini:
$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.20Encrypt file Password menggunakan gpg
Pada contoh sebelumnya, kita menyimpan password di file plaintext bernama "mysshpassword.txt" dan meneruskannya menggunakan flag -f. Kita juga dapat mengenkripsi file kata sandi plaintext dengan gpg.
Tambahkan kata sandi dalam file teks bernama mysshpassword dengan perintah echo:
$ echo "almalinux" > ~/.mysshpassword
Apakah Anda memperhatikan bahwa saya meletakkan titik sebelum kata sandi myssh? Itu berarti saya telah menyembunyikan file kata sandi di direktori $HOME saya.
Enkripsi file kata sandi menggunakan perintah gpg:
$ gpg -c ~/.mysshpassword
Anda akan diminta untuk memasukkan kata sandi di kotak pop-up baru. Ketik kata sandi dua kali dan klik OK untuk menutup kotak.
Hapus file kata sandi plaintext:
$ rm ~/.mysshpassword
Sekarang, Anda dapat menjalankan perintah pada mesin jarak jauh menggunakan perintah berikut:
$ gpg -d -q ~/.mysshpassword .gpg | sshpass ssh ostechnix@192.168.1.20 uname -a
Harap dicatat bahwa perintah di atas tidak akan ssh ke sistem jarak jauh. Itu hanya menjalankan perintah "uname -a" di sistem jarak jauh.
Example 2 - Mentransfer file menggunakan Rsync dengan sshpass
Untuk mentransfer file dari sistem lokal ke sistem jarak jauh menggunakan Rsync melalui SSH, jalankan:
$ rsync ~/file.txt --rsh="sshpass -p almalinux ssh -l ostechnix" 192.168.1.20:/home/ostechnix/
Anda juga dapat menggunakan opsi -e seperti yang ditunjukkan pada bagian Contoh 1 untuk mentransfer file dengan cara yang sedikit kurang terbuka.
$ export SSHPASS=almalinux
$ rsync ~/file.txt --rsh="sshpass -e ssh -l ostechnix" 192.168.1.20:/home/ostechnix/Contoh 3 - Salin file menggunakan scp dengan sshpass
Kita dapat menggunakan sshpass bersama dengan perintah scp untuk menyalin file antara sistem lokal dan jarak jauh dalam mode non-interaktif.
$ scp ~/file.txt --rsh="sshpass -p almalinux ssh -l ostechnix" 192.168.1.20:/home/ostechnix/Example 4 - SSH Otomatisasi kata sandi dengan sshpass di shell scripts
Pada bagian sebelumnya, kita telah membahas cara login ke remote melalui SSH di non-intera cara aktif menggunakan sshpass. Sekarang mari kita lihat cara menggunakan sshpass untuk mengelola koneksi SSH di shell scripts.
Buat skrip baru bernama diskusage_sript.sh dengan konten berikut di dalamnya.
#!/usr/bin/env bash #-------- ----------------------------------------------- #Pengarang: Ostechnix #Tujuan: Melaporkan penggunaan ruang disk sistem file dari sistem jarak jauh #------------------------------------ ------------------- SSHPASS=almalinux sshpass -e ssh ostechnix@192.168.1.20 'df -h'
Jalankan skrip menggunakan perintah:
$ sh diskusage_sript.sh
Contoh output :
Filesystem Ukuran Digunakan Tersedia Penggunaan% Dipasang di /dev/loop0 20G 1.4G 18G 8% / tidak ada 492K 4.0K 488K 1% /dev udev 16G 0 16G 0% /dev/tty tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 8.6M 16G 1% /run tmpfs 3.1G 0 3.1G 0% /run/user/1000
jika Anda tidak ingin memasukkan kata sandi dalam skrip plaintext, Anda cukup mengenkripsi file kata sandi menggunakan gpg sebagai s hown di bagian Contoh 1 dan ganti baris terakhir dalam skrip dengan baris berikut.
gpg -d -q ~/.mysshpassword.gpg | sshpass ssh ostechnix@192.168.1.20 'df -h'
Setelah memodifikasi baris, skrip yang sebenarnya akan terlihat seperti di bawah ini:
#!/usr/bin/env bash #-------------- ----------------------------------------- #Penulis: Ostechnix #Tujuan: File laporan penggunaan ruang disk sistem sistem jarak jauh #------------------------------------------ ------------- gpg -d -q ~/.mysshpassword.gpg | sshpass ssh ostechnix@192.168.1.20 'df -h'
Untuk detail lebih lanjut tentang penggunaan sshpass, lihat halaman manual.
$ man sshpassConclusion
Dalam panduan ini, kita mempelajari apa itu sshpass, cara menginstal sshpass di berbagai sistem Linux dan FreeBSD gunakan sshpass untuk login SSH non-interaktif, dan terakhir bagaimana melakukan otomatisasi kata sandi SSH dalam skrip shell dengan bantuan utilitas sshpass di Linux dan sistem FreeBSD.
Harap dicatat bahwa sshpass bukan pengganti metode otentikasi berbasis kunci SSH. Anda dapat menggunakan sshpass di mana pun Anda perlu menerapkan otentikasi berbasis kata sandi dalam mode non-interaktif.
Seperti yang sudah saya peringatkan, menggunakan sshpass dalam sistem bersama TIDAK disarankan. Karena, kata sandi dicatat dalam riwayat shell dan semua pengguna sistem dapat melihatnya hanya dengan melihat file riwayat bash .
Jika Anda satu-satunya yang menggunakan sistem, maka itu bukan masalah besar. Anda dapat menggunakan sshpass untuk menerapkan otentikasi SSH berbasis kata sandi otomatis.
Reference: