Gentoo Logo

Panduan Keychain Gentoo Linux

Daftar Isi:

1.  Latar Belakang

Masalah yang dihadapi

Jadi anda sudah memiliki komputer Gentoo yang menjalankan sshd, tetapi belum merasa nyaman karena harus terus-menerus mengetikkan password login, iya 'kan? Atau mungkin anda memiliki skrip atau tugas cron yang memerlukan cara mudah untuk menggunakan koneksi ssh. Apapun masalah anda, kami memiliki solusinya, dimulai dengan otentikasi kunci publik.

Bagaimana otentikasi kunci publik bekerja?

Anggaplah kita memiliki sebuah klien yang ingin terhubung ke sshd pada sebuah server. Pertama-tama klien menciptakan sepasang kunci dan memberikan kunci publik ke server. Selanjutnya, kapanpun klien ingin terhubung, server akan mengirimkan pertanyaan yang terenkripsi dengan kunci publik tersebut. Hanya pemegang pasangan dari kunci publik tadilah (klien) yang dapat mendekripnya. Jadi, seperti yang sudah bisa anda duga, respon yang benar akan membuat otentikasi sukes.

2.  Cara menggunakan otentikasi kunci publik

Menciptakan sepasang kunci

Langkah pertama yang harus dilakukan adalah menciptakan sepasang kunci. Untuk melakukannya, kita akan menggunakan perintah ssh-keygen berikut:

Daftar Kode 2.1: Menciptakan sepasang kunci

$ ssh-keygen -t dsa
(Terima saja nilai-nilai default, dan pastikan untuk memasukkan passphrase yang rumit)

Peringatan: Anda harus menggunakan passphrase, terutama jika kunci ini akan digunakan untuk login root!

Sekarang anda seharusnya sudah memiliki sebuah kunci pribadi di ~/.ssh/id_dsa dan sebuah kunci publik di ~/.ssh/id_dsa.pub. Kita akan mengirimkan kunci publik ke server.

Menyiapkan server

Kita akan mengirimkan ~/.ssh/id_dsa.pub ke server yang menjalankan sshd. Kita juga akan menambahkannya ke file ~/.ssh/authorized_keys milik pengguna yang akan melakukan koneksi ke server. Berikut ini adalah contoh cara pengirimannya jika anda sudah memiliki akses ke server.

Daftar Kode 2.2: Mengirimkan kunci publik ke server

$ scp ~/.ssh/id_dsa.pub server_user@server:~/myhost.pub
$ ssh server_user@server "cat ~/myhost.pub >> ~/.ssh/authorized_keys"
$ ssh server_user@server "cat ~/.ssh/authorized_keys"

Output dari perintah terakhir akan menunjukkan kepada anda isi file ~/.ssh/authorized_keys. Pastikan agar isinya sudah benar.

Menguji pengaturan

Secara teori, jika semuanya berjalan dengan lancar, dan daemon ssh di server mengijinkannya, kita sekarang sudah bisa mendapatkan akses ssh tanpa perlu mengetikkan password. Kita masih harus mendekrip kunci pribadi di klien dengan passphrase yang kita gunakan tadi, tetapi jangan sampai tertukar dengan passphrase akun pengguna di server.

Daftar Kode 2.3: Mencoba kunci

$ ssh server_user@server

Mudah-mudahan, anda akan ditanyakan passphrase untuk id_dsa, lalu anda mendapatkan akses ssh sebagai server_user di server. Jika tidak, login sebagai server_user, kemudian periksa isi ~/.ssh/authorized_keys untuk memastikan apakah setiap entri masing-masing berada pada satu baris. Anda juga mungkin perlu memeriksa konfigurasi sshd untuk memastikan apakah otorisasi kunci publik akan didahulukan jika tersedia.

Sekarang anda mungkin berpikir, "Apa gunanya, saya hanya mengganti satu password dengan password lainnya?!" Tenang, bagian selanjutnya akan menunjukkan kepada anda bagaimana kita dapat menghemat waktu kita yang sangat berharga dengan cara ini.

3.  Memperbagus otentikasi kunci publik

Pengaturan kunci dengan ssh-agent

Jika anda sudah mengikuti dari awal, anda mungkin berpikir bahwa kiranya akan lebih bagus lagi jika kita dapat mendekrip kunci pribadi kita sekali, kemudian bebas mendapatkan akses ssh tanpa perlu mengetikkan password apapun. Anda sedang beruntung, inilah fungsi dari program ssh-agent.

Program ssh-agent biasanya akan dimulai pada awal sesi X anda, atau dari skrip startup seperti ~/.bash_profile. Program ini bekerja dengan cara menciptakan sebuah unix-socket, lalu mendaftarkan variabel lingkungan yang sesuai ke semua aplikasi yang dapat memanfaatkan layanan ini dengan terhubung ke socket. Sudah jelas, program ini hanya akan berguna jika kita menjalankannya pada awal sesi X jika kita ingin menggunakan kumpulan kunci pribadi yang telah didekrip pada semua aplikasi X yang memerlukannya.

Daftar Kode 3.1: Menyiapkan ssh-agent

$ ssh-agent

Catatan: Perintah ini akan menjaga semua kunci agar tetap terdekrip sampai anda menghentikannya. Jika anda ingin agar semua kunci didekrip seumur hidup, tambahkan argumen -t seperti yang dijelaskan di man ssh-agent.

Ketika anda menjalankan ssh-agent, perintah ini akan memberitahukan anda tentang PID-nya, juga menetapkan beberapa variabel lingkungan, yaitu SSH_AUTH_SOCK dan SSH_AGENT_PID. Perintah ini juga akan langsung menambahkan ~/.ssh/id_dsa ke koleksinya dan meminta passphrase yang benar dari anda. Jika anda memiliki kunci-kunci pribadi lain yang ingin anda tambahkan ke ssh-agent yang sedang berjalan, anda dapat menggunakan perintah ssh-add seperti pada contoh berikut:

Daftar Kode 3.2: Menambahkan kunci lain ke ssh-agent

$ ssh-add file_kunci_lain

Karena sekarang kunci pribadi anda sudah siap, anda dapat melakukan ssh ke server tanpa perlu mengetikkan password lagi.

Daftar Kode 3.3: ssh tanpa password

$ ssh server

Tidakkah baik jika kita tahu cara menghentikan ssh-agent jika diperlukan?

Daftar Kode 3.4: Menghentikan ssh-agent

$ ssh-agent -k

Catatan: Jika anda mendapatkan masalah ketika menjalankan ssh-agent, kemungkinan program ini masih berjalan. Anda dapat menghentikannya seperti proses-proses lain dengan perintah killall ssh-agent.

Jika anda masih menginginkan kenyamanan lain dari ssh-agent, lanjutkan ke bagian selanjutnya tentang penggunaan keychain. Jangan lupa untuk menghentikan ssh-agent jika anda ingin melanjutkan.

Mengambil manfaat terakhir dari ssh-agent

Dengan keychain anda dapat menggunakan kembali ssh-agent di antara beberapa login, dan (opsional) menanyakan passphrase setiap kali ada pengguna yang login. Namun sebelum melanjutkan, mari kita emerge keychain:

Daftar Kode 3.5: Instalasi keychain

# emerge keychain

Dengan anggapan proses emerge sukses, sekarang anda dapat dengan bebas menggunakan keychain. Tambahkan beris-baris berikut ini ke file ~/.bash_profile anda untuk mengaktifkannya.

Daftar Kode 3.6: Mengaktifkan keychain di .bash_profile

keychain ~/.ssh/id_dsa
. ~/.keychain/$HOSTNAME-sh

Catatan: Anda dapat menambahkan kunci pribadi lain jika anda ingin. Juga, jika anda ingin ditanyakan passphrase setiap kali anda membuka shell, tambahkan opsi --clear.

Catatan: Jika anda tidak menggunakan bash, bacalah bagian EXAMPLES dari man keychain untuk mendapatkan contoh-contoh penggunaannya pada shell-shell lain. Intinya adalah menjalankan perintah-perintah tersebut setiap kali anda menggunakan shell.

Mari kita coba. Pertama pastikan agar ssh-agent telah dihentikan, kemudian jalankan shell baru, biasanya cukup dengan login atau membuka terminal. Anda akan dimintakan password untuk semua kunci yang anda tentukan tadi. Semua shell yang dibuka setelahnya akan menggunakan kembali ssh-agent, dan mengijinkan anda untuk terus-menerus mendapatkan koneksi ssh tanpa perlu memasukkan password.

Menggunakan keychain dengan KDE

Jika anda adalah pengguna KDE, daripada menggunakan ~/.bash_profile, anda juga boleh memerintahkan KDE untuk mengatur ssh-agent. Untuk melakukannya, anda perlu mengedit file /usr/kde/${KDE_VERSION}/env/agent-startup.sh, yang dieksekusi ketika KDE dijalankan, dan file /usr/kde/${KDE_VERSION}/shutdown/agent-shutdown.sh, yang dieksekusi ketika KDE dihentikan, dimana ${KDE_VERSION} adalah dua angka pertama dari versi KDE yang anda gunakan. Misalnya, jika anda menggunakan KDE 3.5.1, berarti anda harus mengedit file:

Daftar Kode 3.7: Edit /usr/kde/3.5/env/agent-startup.sh

if [ -x /usr/bin/ssh-agent ]; then
  eval "$(/usr/bin/ssh-agent -s)"
fi

Daftar Kode 3.8: Edit /usr/kde/3.5/shutdown/agent-shutdown.sh

if [ -n "${SSH_AGENT_PID}" ]; then
  eval "$(ssh-agent -k)"
fi

Sekarang, yang perlu anda lakukan adalah membuka terminal kesukaan anda, seperti Konsole, lalu muat semua kunci yang ingin anda gunakan. Sebagai contoh:

Daftar Kode 3.9: Muat kunci ssh

keychain ~/.ssh/id_dsa
(Masukkan password kunci anda)

Kunci-kunci anda akan selalu diingat sampai anda keluar dari dari sesi KDE atau menghentikan ssh-agent.

4.  Penutup

Pertimbangan Keamanan

Tentu saja, penggunaan ssh-agent akan sedikit melonggarkan keamanan sistem anda. Jika ada orang lain yang menggunakan shell anda ketika anda sedang berada di toilet, ia bisa login ke semua server anda tanpa membutuhkan password. Dan akhirnya menjadi resiko bagi server anda. Anda juga perlu membaca aturan keamanan lokal. Jika anda menggunakan ssh-agent, jangan pernah lupa untuk mengambil tindakan-tindakan pencegahan yang diperlukan untuk tetap menjaga keamanan sesi anda.

Mengatasi masalah

Seharusnya semua langkah di panduan ini bisa anda selesaikan tanpa masalah. Tetapi jika anda mendapatkan masalah, maka anda perlu mengetahui beberapa hal:

  • Jika anda tidak dapat terhubung dengan ssh-agent, coba gunakan ssh dengan argumen -vvv untuk mengetahui apa yang sedang terjadi. Terkadang server belum dikonfigurasi untuk menggunakan otentikasi kunci publik, terkadang sudah dikonfigurasi tetapi masih menanyakan password lokal! Jika ini kasusnya, anda mungkin perlu menggunakan opsi -o, atau edit file sshd_config di server.
  • Jika anda mendapatkan masalah dengan ssh-agent atau keychain, anda mungkin sedang menggunakan shell yang tidak mengerti akan perintah-perintah yang digunakan. Bacalah manual ssh-agent dan keychain untuk mengetahui cara penggunaannya dengan shell-shell lain.


Print

Diperbarui 29 April 2006

Versi asli dari dokumen ini terakhir diupdate 16 Desember 2010

Rangkuman: Dokumen ini menjelaskan cara menggunakan kunci publik ssh dan program keychain. Anda dianggap telah memiliki pemahaman dasar tentang kriptografi kunci publik.

Eric Brown
Author

Marcelo Góes
Editor

Dzikri Aziz
Translator

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.