[Catatan Editor, 29 Nov 2021:Semua contoh pemberian kata sandi pada baris perintah termasuk risiko kata sandi ditangkap dalam riwayat shell pengguna (jika didukung) atau terlihat oleh semua pengguna sistem dalam daftar proses. Pakar keamanan menyarankan untuk menghapus semua file dan menghapus log shell.]
Menghubungkan dan mentransfer file ke sistem jarak jauh adalah sesuatu yang selalu dilakukan oleh administrator sistem. Salah satu alat penting yang digunakan oleh banyak administrator sistem pada platform Linux adalah SSH. SSH mendukung dua bentuk otentikasi:
- Otentikasi sandi
- Otentikasi kunci publik
Otentikasi kunci publik dianggap sebagai bentuk paling aman dari kedua metode ini, meskipun otentikasi kata sandi adalah yang paling populer dan termudah. Namun, dengan otentikasi kata sandi, pengguna selalu diminta untuk memasukkan kata sandi. Pengulangan ini membosankan. Selain itu, SSH juga memerlukan intervensi manual saat digunakan dalam skrip shell. Jika otomatisasi diperlukan saat menggunakan otentikasi kata sandi SSH, maka alat sederhana yang disebut sshpass
sangat diperlukan.
Apa itu sshpass?
sshpass
utilitas dirancang untuk menjalankan SSH menggunakan keyboard-interactive mode otentikasi kata sandi, tetapi dengan cara non-interaktif.
SSH menggunakan akses TTY langsung untuk memastikan bahwa kata sandi memang dikeluarkan oleh pengguna keyboard interaktif. sshpass
menjalankan SSH dalam TTY khusus, membodohi SSH dengan mengira SSH mendapatkan kata sandi dari pengguna interaktif.
Instal sshpass
Anda dapat menginstal sshpass
dengan perintah sederhana ini:
# yum install sshpass
Gunakan sshpass
Tentukan perintah yang ingin Anda jalankan setelah sshpass
pilihan. Biasanya, perintahnya adalah ssh
dengan argumen, tetapi juga bisa berupa perintah lain. Namun, permintaan kata sandi SSH saat ini di-hardcode menjadi sshpass
.
Sinopsis sshpass
perintah dijelaskan di bawah ini:
sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments
Dimana:
-ppassword
The password is given on the command line.
-ffilename
The password is the first line of the file filename.
-dnumber
number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor.
-e
The password is taken from the environment variable "SSHPASS".
Contoh
Untuk lebih memahami nilai dan penggunaan sshpass
, mari kita lihat beberapa contoh dengan beberapa utilitas yang berbeda, termasuk SSH, Rsync, Scp, dan GPG.
Contoh 1:SSH
Gunakan sshpass
untuk masuk ke server jauh dengan menggunakan SSH. Anggap saja sandinya adalah!4u2tryhack
. Berikut adalah beberapa cara untuk menggunakan opsi sshpass.
A. Gunakan -p
(ini dianggap sebagai pilihan yang paling tidak aman dan tidak boleh digunakan):
$ sshpass -p !4u2tryhack ssh [email protected]
-p
opsi terlihat seperti ini ketika digunakan dalam skrip shell:
$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]
B. Gunakan -f
opsi (kata sandi harus baris pertama dari nama file):
$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]
$ chmod 0400 pass_file
sangat penting untuk memastikan keamanan file kata sandi. umask default pada RHEL adalah 033, yang akan memungkinkan pembacaan dunia ke file.
Berikut adalah -f
opsi saat digunakan dalam skrip shell:
$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]
C. Gunakan -e
opsi (kata sandi harus baris pertama dari nama file):
$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]
-e
opsi ketika digunakan dalam skrip shell terlihat seperti ini:
$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]
Contoh 2:Rsync
Gunakan sshpass
dengan rsync
:
$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/
Di atas menggunakan -e
opsi, yang meneruskan kata sandi ke variabel lingkungan SSHPASS
Kita dapat menggunakan -f
beralih seperti ini:
$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/
Contoh 3:Scp
Gunakan sshpass
dengan scp:
$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html
Contoh 4:GPG
Anda juga dapat menggunakan sshpass
dengan file terenkripsi GPG. Ketika -f
switch digunakan, file referensi dalam plaintext. Mari kita lihat bagaimana kita dapat mengenkripsi file dengan GPG dan menggunakannya.
Pertama, buat file sebagai berikut:
$ echo '!4u2tryhack' > .sshpasswd
Selanjutnya, enkripsi file menggunakan gpg
perintah:
$ gpg -c .sshpasswd
Hapus file yang berisi plaintext:
$ rm .sshpasswd
Terakhir, gunakan sebagai berikut:
$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]
Menutup
sshpass
adalah alat sederhana yang dapat sangat membantu sysadmin. Ini tidak, dengan cara apa pun, mengesampingkan bentuk autentikasi SSH yang paling aman, yaitu autentikasi kunci publik. Namun, sshpass
juga dapat ditambahkan ke kotak alat sysadmin.
[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]