Bagaimana cara menggunakan gpg dan SSH bersama? [duplikat]

11

Kemungkinan Duplikat:
Apakah kunci GPG dan SSH dipertukarkan?

Bagaimana cara menggunakan gpg dan SSH bersama?

Saya tahu prosedur dasar 1) menggunakan gpg untuk mengenkripsi dan mendekripsi file teks dan 2) menghasilkan dan menggunakan kunci SSH untuk mengakses server jarak jauh tanpa kata sandi.

Saya ingin tahu apakah keduanya dapat diintegrasikan. Apakah keduanya tidak terkait dan harus dipisahkan dalam penggunaan sehari-hari?

qazwsx
sumber

Jawaban:

7

Saya sedang melakukan penelitian tentang topik ini dan saya dapat memberikan Anda beberapa petunjuk, tetapi saya belum menemukan cara untuk membuatnya bekerja.

Monyet

Monkeysphere tampaknya proyek yang sangat menarik, tetapi saya tidak dapat mengkompilasinya di bawah Mac OS X tanpa menyumbat ruang disk kecil saya dengan MacPorts.

Menggunakan gpgkey2ssh

Cara pertama yang saya sarankan untuk Anda coba adalah membuat entri Author_key yang kompatibel dari id kunci Anda (misalnya, BFB2E5E3) dengan:

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

Di sini saya menambahkannya ke localhost saya karena saya menjalankan ssh server untuk tujuan pengujian, tetapi tentu saja Anda harus menambahkan ini ke host target ~/.ssh/authorized_keys. Selanjutnya Anda perlu memberi tahu SSH untuk menggunakan bagian pribadi dari kunci ini selama otentikasi, tetapi hanya mengekspor versi ASCII lapis baja dari kunci pas tidak bekerja:

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

Menggunakan gpg-agent

gpg-agentmemiliki opsi --enable-ssh-supportyang memungkinkan untuk menggunakannya sebagai pengganti drop-in untuk yang terkenal ssh-agent. Saya pernah membaca tentang beberapa orang yang mencoba menambahkan melalui ssh-addkunci GPG mereka setelah meluncurkan gpg-agentdengan cara ini:

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

Tetapi saya tidak berpikir ini akan berhasil. The gpg-agent manualnya mengatakan:

Kunci SSH, yang akan digunakan melalui agen, perlu ditambahkan ke agen gpg pada awalnya melalui utilitas ssh-add. Ketika kunci ditambahkan, ssh-add akan meminta kata sandi file kunci yang disediakan dan mengirim materi kunci yang tidak dilindungi ke agen; ini menyebabkan agen gpg meminta frasa sandi, yang akan digunakan untuk mengenkripsi kunci yang baru diterima dan menyimpannya di direktori spesifik agen gpg.

Jadi sepertinya itu gpg-agentharus digunakan sebagai langkah tambahan untuk melindungi kunci SSH Anda dengan enkripsi GPG.

Mengonversi kunci GPG ke OpenSSH

Jérôme Pouiller di blognya menulis bahwa utilitas Gpgsm dapat mengekspor kunci dan sertifikat di PCSC12; mereka kemudian dapat digunakan oleh OpenSSH:

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

Tapi saya belum menemukan cara untuk gpgsmmenerima keypairs gpg saya.

Hal lain yang bisa Anda coba

SSH memiliki -Iopsi untuk menentukan perpustakaan bersama PKCS # 11 sshharus digunakan untuk berkomunikasi dengan token PKCS # 11 yang menyediakan kunci RSA pribadi pengguna. ssh-keygendapat menggunakan RFC4716 / SSH2 kunci publik atau pribadi, kunci publik PEM PKCS8, dan kunci publik PEM untuk menghasilkan kunci privat (atau publik) yang kompatibel dengan OpenSSH menggunakan opsi -idan -m.

Tetap saja saya tidak dapat menemukan cara untuk menyatukan semuanya.

Claudio Floreani
sumber
1
Untuk referensi di masa mendatang, jika Anda menemukan dua pertanyaan yang pada dasarnya identik, Anda dapat menandai mereka sebagai duplikat (menggunakan flagtautan di bawah pertanyaan), daripada memposting jawaban yang sama dua kali. Terima kasih atas tanggapan terperincinya!
nhinkle
Maaf saya tidak tahu tentang fitur ini. Terima kasih
Claudio Floreani
2
Saya tidak yakin apa yang ingin Anda capai gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Apakah Anda teehanya menggunakan sehingga Anda dapat melihat output? Output dari perintah ini tidak cocok untuk digunakan oleh ssh-add; id_rsafile yang dihasilkan tidak dapat dimuat ke dalam salah satu ssh-agentatau gpg-agent, juga tidak dapat digunakan secara langsung oleh ssh.
larsks
2

Secara teknis ya, kunci PGP dapat digunakan untuk otentikasi SSH. Apa yang orang sebut "kunci PGP" lebih dari sertifikat , berisi RSA, ECDSA biasa atau keypairs lainnya (kunci utama dan subkunci) bersama dengan metadata sertifikat. Bahkan, bahkan ada bendera penggunaan "otentikasi" yang ditentukan.

Namun, tidak disarankan untuk menggunakan kunci yang sama untuk berbagai keperluan; namun, ini mudah dipecahkan karena Anda dapat dengan mudah menambahkan subkunci hanya otentikasi ke sertifikat PGP Anda (via gpg --expert --edit-key). Anda akan memiliki satu kunci utama penandatanganan / sertifikasi, subkunci enkripsi, dan subkunci otentikasi.

Namun dalam praktiknya, saya belum dapat menemukan cara mengautentikasi menggunakan kunci PGP secara langsung, meskipun saya terlalu malas untuk mencoba beberapa ide. Suite Monkeysphere memiliki alat untuk menambahkan subkunci otentikasi GPG Anda ke ssh-agent, harus sederhana. Tetapi harus ada beberapa posting Pengguna Super yang lebih tua tentang ini.

pengguna1686
sumber
Terima kasih untuk informasi. Mereka berguna tetapi tidak cukup untuk menjawab pertanyaan saya. Saya masih tidak tahu bagaimana mengintegrasikan sertifikat PGP dan kunci SSH saya.
qazwsx
Dari Monkeysphere docs; monkeysphere subkey-to-ssh-agentuntuk memuat kunci Anda ke agen.
user1686