Panduan Keychain Gentoo Linux
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
|
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
|
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.
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|