Siapkan Login SSH Tanpa Kata Sandi untuk Beberapa Server Jarak Jauh Menggunakan Skrip


Otentikasi berbasis kunci SSH (juga dikenal sebagai otentikasi kunci publik) memungkinkan otentikasi tanpa kata sandi dan ini merupakan solusi yang lebih aman dan jauh lebih baik daripada otentikasi kata sandi. Salah satu keuntungan utama login tanpa kata sandi SSH, apalagi keamanan, adalah memungkinkan otomatisasi berbagai jenis proses lintas server.

Pada artikel ini, kami akan mendemonstrasikan cara membuat pasangan kunci SSH dan menyalin kunci publik ke beberapa host Linux jarak jauh sekaligus, dengan skrip shell.

Buat Kunci SSH Baru di Linux

Pertama, buat pasangan kunci SSH (kunci pribadi/identitas yang digunakan klien SSH untuk mengautentikasi dirinya sendiri saat masuk ke server SSH jarak jauh dan kunci publik disimpan sebagai kunci resmi pada sistem jarak jauh yang menjalankan server SSH) menggunakan ssh-keygen sebagai berikut:

ssh-keygen

Buat Skrip Shell untuk Beberapa Login Jarak Jauh

Selanjutnya, buat skrip shell yang akan membantu menyalin kunci publik ke beberapa host Linux jarak jauh.

vim ~/.bin/ssh-copy.sh

Salin dan tempel kode berikut ke dalam file (ganti variabel berikut sesuai USER_NAME – nama pengguna untuk dihubungkan, HOST_FILE – file yang berisi daftar nama host atau alamat IP , dan ERROR_FILE – file untuk menyimpan kesalahan perintah ssh).

#!/bin/bash
USER_NAME="root"
HOST_FILE="/root/hosts"
ERROR_FILE="/tmp/ssh-copy_error.txt"
PUBLIC_KEY_FILE="$1"

if [ ! -f  $PUBLIC_KEY_FILE ]; then
        echo "File '$PUBLIC_KEY_FILE' not found!"
        exit 1
fi

if [ ! -f $HOST_FILE ]; then
        echo "File '$HOST_FILE' not found!"
        exit 2
fi

for IP in `cat $HOST_FILE`; do
        ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE
        RESULT=$?
        if [ $RESULT -eq 0 ]; then
                echo ""
                echo "Public key successfully copied to $IP"
                echo ""
        else
                echo "$(cat  $ERROR_FILE)"
                echo 
                exit 3
        fi
        echo ""
done

Simpan file dan tutup.

Kemudian buat skrip tersebut dapat dieksekusi dengan perintah chmod seperti pada gambar.

chmod +x ssh-copy.sh

Sekarang jalankan skrip ssh-copy.sh dan tentukan file kunci publik Anda sebagai argumen pertama seperti yang ditunjukkan pada tangkapan layar:

./ssh-copy.sh /root/.ssh/prod-rsa.pub

Selanjutnya, gunakan ssh-agent untuk mengelola kunci Anda, yang menyimpan kunci pribadi Anda yang telah didekripsi di memori dan menggunakannya untuk mengautentikasi login. Setelah memulai ssh-agent, tambahkan kunci pribadi Anda ke dalamnya sebagai berikut:

eval "$(ssh-agent -s)"
ssh-add  ~/.ssh/prod_rsa

Masuk ke Server Linux Jarak Jauh tanpa Kata Sandi

Sekarang Anda dapat masuk ke salah satu host jarak jauh Anda tanpa memberikan kata sandi untuk otentikasi pengguna SSH. Dengan cara ini, Anda dapat mengotomatiskan proses lintas server.

ssh [email 

Hanya itu yang kami punya untuk Anda! Jika Anda mempunyai kontribusi khusus untuk meningkatkan skrip shell, beri tahu kami melalui formulir masukan di bawah.