Hide your privates

Hide your privates

ssshhh

Mac saya telah berubah menjadi sedikit berantakan. Saya memiliki kunci pribadi ssh (yang tentu saja menggunakan Frasa Sandi!) di berbagai tempat dan saya tidak terlalu senang dengan hal itu.

Saya memiliki beberapa server berbeda yang saya sambungkan. Ada beberapa sistem GitHub, sistem Linux, dan tentu saja beberapa sistem z/OS. Untuk setiap sistem z/OS, saya memiliki beberapa akun yang berbeda: satu untuk instalasi perangkat lunak, satu untuk manajemen sistem, dan satu untuk pengkodean. Saya juga mengelola beberapa sistem ini melalui perangkat lunak pada platform lain, misalnya server Red Hat OpenShift atau server IBM Cloud.

Saya menginginkan solusi untuk membantu mengelola banyak kredensial ini sambil juga mengikuti praktik industri terbaik untuk penyimpanan dan organisasi data sensitif.

Saya mencoba LastPass dan berhasil membuat beberapa kemajuan dengan CLI dan dukungan ssh bawaan yang mereka sediakan. Saya menulis beberapa skrip untuk membuat kunci di LastPass dan menambahkannya ke agen ssh. Itu baik-baik saja. Saya mencoba 1Password dan awalnya kecewa, tetapi kemudian melihat 1Password 8 beta mereka, dengan manajemen kunci ssh di dalamnya, dan tidak perlu skrip.

Setelah menginstal 1Password 8 beta dan meluncurkannya, saya mengaktifkan Agen SSH 1Password, di bawah preferensi Pengembang:

Tangkapan Layar Preferensi Pengembang

Karena Mac saya memiliki dukungan biometrik dengan Mac Touch ID-nya, saya juga mengaturnya.

Saya membiarkan 1password menghasilkan kunci pribadi baru untuk saya. Saya menggunakan konvensi penamaan sederhana untuk kunci saya. Pada contoh di bawah, kliennya adalah [email protected] dan servernya adalah [email protected] Jangan khawatir – ini hanya sebuah contoh – saya tidak membocorkan kunci apapun dalam artikel ini.

Contoh kunci ssh

Setelah saya membuat pasangan kunci, saya mengambil kunci publik untuk disalin ke sistem target seperti GitHub. 1password memiliki plugin browser untuk ini yang merupakan alternatif yang bagus.

Pasangan kunci publik/pribadi yang dihasilkan

Saya mengulangi proses untuk semua kunci saya. Ini adalah kesempatan bagus untuk mengganti kunci lama saya. Jika mau, Anda dapat mengimpor kunci pribadi yang ada dengan frasa sandi alih-alih membuat kunci baru. Jika Anda mengimpor kunci yang ada dengan frasa sandi, itu mendekripsi dan hanya menyimpan kunci pribadi tanpa frasa sandi. Karena kunci pribadi tidak berakhir di disk kapan saja, ini tampaknya masuk akal.

1Password menyediakan agen otentikasi SSH saat Anda menginstal perangkat lunak. Ini sedikit berbeda di Linux, tetapi di Mac saya, saya perlu:

ekspor SSH_AUTH_SOCK=agent.sock

di mana agent.sock adalah lokasi agen otentikasi 1Password di Mac saya. Dalam kasus saya, ini adalah:

ekspor SSH_AUTH_SOCK=/Users/[email protected]/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock

Saya menambahkan ekspor ke ~/.zshrc saya sehingga akan selalu tersedia.

Pada titik ini, saya pikir saya sudah selesai. Saya dapat terhubung ke sistem saya dan saya hanya perlu meletakkan jari saya di Mac Touch ID saya untuk terhubung:

Otentikasi Kunci SSH Biometrik. Dingin…

Kemudian saya menemukan bahwa jika saya memiliki lebih dari 6 entri di agen saya, saya menemukan kesalahan terlalu banyak kegagalan otentikasi yang ditakuti. Apa yang harus dilakukan?

Dokumentasi 1Password menjelaskan cara mengubah konfigurasi saya sehingga ssh dapat dengan cerdas menentukan kunci publik mana yang akan digunakan untuk host tertentu, daripada menelusuri semuanya. Tetapi jika Anda memiliki beberapa userid di satu server, Anda tidak akan dapat menggunakan Host dan entri server sederhana seperti yang dijelaskan. Entri StackOverflow menunjukkan cara mengatur alias untuk setiap koneksi saya, dan dengan menggabungkan informasi ini, saya menemukan sesuatu yang bekerja dengan baik untuk saya. Untuk setiap userid di server, saya membuat alias sebagai berikut:

Host _ Hostname IdentityFile User IdentitasHanya ya

Jadi untuk id ibmuser saya di server zot1 z/OS, saya memasukkan kunci publik saya ke dalam file ~/.ssh/[email protected], dan membuat entri berikut:

Host ibmuser_zot1 Hostname zot1 IdentityFile ~/.ssh/[email protected] User ibmuser IdentitiesOnly yes

Perhatikan bahwa kunci pribadi tidak ditentukan di sini – hanya kunci publik. Dengan entri host yang diatur dalam file konfigurasi, agen identitas 1Password dapat menentukan kunci pribadi yang sesuai untuk digunakan tanpa harus menggilirnya untuk mencoba terhubung. Ini juga mempercepat koneksi ssh. Bonus yang bagus.

Idealnya, akan menyenangkan untuk tidak memiliki kunci publik saya di sistem file saya juga. Ini satu hal lagi yang harus dilacak, tetapi saya belum menemukan cara melakukannya (jika seseorang tahu, silakan hubungi!)

Sekarang, saya dapat terhubung ke semua userid saya yang berbeda di semua server saya yang berbeda dan menggunakan sidik jari saya. Aman. Mudah. Cepat. Apa yang tidak untuk dicintai.

Author: Douglas Hernandez