GNU/Linux >> Belajar Linux >  >> Linux

Otomatisasi kata sandi SSH di Linux dengan sshpass

[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:

  1. Otentikasi sandi
  2. 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. ]


Linux
  1. SSHPass:Cara SSH ke server menggunakan skrip tanpa kata sandi (non-interaktif)

  2. Ssh Login Dengan Clear Text Password Sebagai Parameter??

  3. Cara mengizinkan ssh dengan kata sandi kosong di Linux

  1. Bagaimana cara Setup Rsync tanpa kata sandi dengan SSH di UNIX / Linux?

  2. Rsync dengan SSH meminta kata sandi jarak jauh

  3. Bagaimana cara memeriksa kata sandi dengan Linux?

  1. Memulai SSH di Linux

  2. Cara Menonaktifkan Login SSH Dengan Kata Sandi

  3. Cara Setup Rsync dengan SSH di UNIX/Linux (rsync tanpa password)