sudah lama gak posting nih wkwkwkwkw… sampek lali password’e =))

ok, here is the real content…

How to ini dicuplik dari buku Tugas Akhir saya B). Katakanlah anda mempunyai sekelompok komputer yang akan dipakai untuk parallel programming menggunakan protokol tertentu seperti Message Passing Interface. Syarat fondasi yang harus dipenuhi adalah setiap komputer mempunyai hostname yang berbeda-beda dan setiap komputer harus dapat berkomunikasi menggunakan hostname masing-masing. Nah, setiap MPI memanfaatkan utilitas rsh (seperti ssh, namun gak pake secure :p) untuk berkomunikasi ke setiap komputer. Dan komunikasi ini harus tidak boleh diinterupsi oleh apapun. Padahal, biasanya kalo kita pake ssh, pasti harus masukin password, ya kan?? (mungkin tidak untuk yang sudah pernah memakai layanan Amazon EC2).

Agar ssh bisa langsung konek tanpa harus memasukkan password, kita harus menggunakan metode otentikasi yang berbeda, yaitu public key authentication. Hal pertama yang harus dilakukan adalah membuat keypair.

beni@localhost: ~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/beni/.ssh/id_rsa): ## langsung enter saja di sini
Enter passphrase (empty for no passphrase): ## di sini juga langsung enter 
Enter same passphrase again: ## tekan enter pliz ._.
Your identification has been saved in /home/beni/.ssh/id_rsa.
Your public key has been saved in /home/beni/.ssh/id_rsa.pub.
The key fingerprint is: 52:d9:11:b4:b6:63:39:00:95:e4:d7:33:c5:59:68:d4 beni@localhost 
The key's randomart image is:
+--[ RSA 2048]----+
| a random art is |
| displayed here..|
+-----------------+

Biasanya, jika suatu komputer me-remote komputer lain untuk pertama kalinya, hostkey komputer itu tidak ditemukan di file ~/.ssh/known_hosts, maka akan ada interupsi berupa konfirmasi apakah anda yakin hostkey itu benar-benar milik komputer yang di-remote, well, i’m just quite sure for this, and answer yes (a complete y, e, and s) to this.

Jika semua host (termasuk komputer tempat kita membuat keypair, namun bukan localhost, melainkan nama hostname yang sebenarnya) sudah kita ssh, saatnya menyalin folder .ssh yang berada di folder home user di komputer yang kamu pake untuk membuat keypair ke home user yang sama di semua komputer. Untuk menyimpan pemetaan hostname ke alamat IP, it is up to you. Pake /etc/hosts dimasukin satu persatu boleh, pake DNS server sendiri juga boleh.

Dalam contoh ini, aku menggunakan /etc/hosts untuk menyimpan pemetaan hostname ke alamat IP. Isi /etc/hosts ini harus sama di setiap komputer:

127.0.0.1 localhost localhost.localdomain
192.168.57.2 awan 
192.168.57.3 pohon 
192.168.57.4 trotoar 
192.168.57.5 zebra-cross

Maaf ya kalo hostname terkesan ngawur, emang di kepala dapetnya itu :p. Oke, berikut ini adalah shell script yang berguna untuk melakukan apa yang saya jelaskan tadi, memasukkan hostkey ke ~/.ssh/known_hosts dan menyebarkan folder ~/.ssh ke semua komputer.

#!/bin/bash 
# ini akan menyebabkan ssh menanyakan apakah hostkey ini 
# akan ditambahkan ke known_hosts, ketik 'yes'
for i in awan pohon trotoar zebra-cross; do 
    ssh $i /bin/true 
done
# ini akan menyalin folder .ssh ke 
# home user yang sama pada semua komputer.
for i in awan pohon trotoar zebra-cross; do 
    scp -r .ssh $i:
done

yap, jadi untuk membuat otentikasi public key ke sekelompok komputer sekaligus:

  1. bikin keypair dengan ssh-keygen
  2. jalankan script tadi, copy-paste, lalu simpan dengan nama, katakanlah, spread-keypair.sh di folder home, kemudian jalankan
$ chmod +x spread-keypair.sh 
$ ./spread-keypair.sh