GPG ve SSH anahtarları değiştirilebilir mi?


70

Bir RSAanahtar oluşturmak GPGve SSHgiriş yapmak için kullanmak istiyorum . Bu mümkün mü? Öyleyse nasıl?

edit: görmek @ wwerner'ın cevabı, ben denemedim ama mevcut çözüm gibi görünüyor (2018 itibariyle)

Yanıtlar:


26

Bunun eski bir yazı olduğunu biliyorum, ama benim gibi insanlar için bunun üzerine tökezlediyorlar:

Şimdi (gpg 2.1'den beri) ssh anahtarlarını doğrudan gpg: kullanarak doğrudan çıkarmak mümkündür gpg --export-ssh-key <key id>!.

!İşareti, primer anahtar verilebilir yapan ve anahtar doğrulama özelliğine sahip ([CA]) olup olmadığının kontrol edilmesi atlar, isteğe bağlıdır.

Detaylar:


Bu cevap kabul edilen cevap olmalıdır. :)
Inkeliz

30

Bu konu hakkında biraz araştırma yapıyorum ve size bazı ipuçları verebilirim, ancak henüz çalışmasını sağlayacak bir yol bulamadım.

Monkeysphere

Monkeysphere çok ilginç bir proje gibi gözüküyor, ancak MacPorts ile küçük boş disk alanımı tıkamadan Mac OS X altında derleyemedim.

Gpgkey2ssh kullanımı

Denemenizi önerdiğim ilk yöntem, anahtar kimliğinizden (ör: BFB2E5E3) uyumlu bir onaylı_ anahtar girişi oluşturmaktır.

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

Burada test amacıyla bir ssh sunucusu çalıştırdığım için onu yerel ana bilgisayarıma ekledim, ancak elbette bunu hedef ana bilgisayara eklemelisiniz ~/.ssh/authorized_keys. Daha sonra, SSH'ye kimlik doğrulama sırasında bu anahtarın özel bölümünü kullanmasını söylemeniz gerekir, ancak yalnızca tuş takımının bir ASCII zırhlı sürümünü dışa aktarması işe yaramaz:

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

Gpg agent'ı kullanma

gpg-agent--enable-ssh-supportiyi bilinenler için bir drop-ikame olarak kullanılmasına izin veren bir seçeneğe sahiptir ssh-agent. Bu yöntemi ssh-addbaşlattıktan sonra bazı kişilerin GPG anahtarıyla eklemeye çalıştığını okudum gpg-agent:

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

Ama bunun işe yarayacağını sanmıyorum. Gpg-agent manpage diyor ki:

Aracı aracılığıyla kullanılacak olan SSH Anahtarlarının, başlangıçta ssh-add yardımcı programıyla gpg aracısına eklenmesi gerekir. Bir anahtar eklendiğinde, ssh-add, verilen anahtar dosyasının şifresini soracak ve korunmayan anahtar malzemesini aracıya gönderecektir; bu, gpg aracısının yeni alınan anahtarı şifrelemek ve gpg aracısına özgü bir dizinde saklamak için kullanılacak bir parola sormasını sağlar.

Dolayısıyla gpg-agent, SSH anahtarlarınızı bir GPG şifrelemesi ile korumak için ek bir önlem olarak kullanılması gerektiği anlaşılıyor .

GPG anahtarını OpenSSH'ye dönüştürme

Jérôme Pouiller, blogunda Gpgsm yardımcı programının PCSC12'de anahtarları ve sertifikaları verebileceğini; daha sonra OpenSSH tarafından kullanılabilirler:

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

Ama gpgsmgpg keypairs'imi kabul etmenin bir yolunu bulamadım .

Deneyebileceğiniz diğer şeyler

SSH, kullanıcının özel RSA anahtarını sağlayan bir PKCS # 11 belirteci ile iletişim kurmak için kullanması gereken -IPKCS # 11 paylaşılan kütüphanesini belirleme seçeneğine sahiptir ssh. ve seçeneklerini ssh-keygenkullanarak OpenSSH uyumlu bir özel (veya genel) anahtar oluşturmak için RFC4716 / SSH2 genel veya özel anahtarını, PEM PKCS8 genel anahtarlarını ve PEM genel anahtarlarını kullanabilirsiniz .-i-m

Yine de hepsini bir araya getirmenin bir yolunu bulamıyorum.


5
Not 2.1.11 (2016-01-26) itibariyle gpgkey2sshdeğiştirilmiştir --export-ssh-key. Bunu anlamam biraz zaman aldı. Kullanım gpg --export-ssh-key BFB2E5E3.
MayeulC


Linode'da iyi bir yazı var ama SSH ile kimlik doğrulaması için gpg-agent kullandılar. Gpg gizli anahtarını bir SSH özel anahtarına dönüştürmezler.
Xorax,

14

Hayır, birbirleriyle değiştirilemezler. Evet, kimlik doğrulama için GPG anahtarlarını kullanmak mümkündür - Monkeysphere paketinde ham RSA tuş takımını GPG sertifikanızdan çıkarmak için araçlar bulunur.

  1. GPG sertifikanızın "kimlik doğrulama" yetenek bayrağını içeren bir alt anahtara ihtiyacı olacaktır. Böyle bir alt anahtar oluşturmak için bir kez çalıştırın:

    monkeysphere g
    
  2. Şimdi kimlik doğrulama alt anahtarlarınızı ssh- agent'a ekleyin :

    monkeysphere s
    

Biraz alakalı: bu gnupg kullanıcıları dizisi .


9

Bu soruya verilen cevaplardan gelen bilgiler ve gnupg kullanıcıları posta listesinin yardımıyla GPG anahtarımı SSH kimlik doğrulaması için nasıl kullanabileceğimi çözebildim. Claudio Floreani'nin cevabında daha önce de belirtildiği gibi, bunu yapmanın birkaç olası yöntemi var.

Bazı olası çözümler hakkında bir blog yazısı yazdım: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

Özetlemek için: Ya şu anda beta aşamasında olan GnuPG 2.1 kullanıyorsunuz. Bu sürümü kullanırken, gpg-agent'ı --enable-ssh-support seçeneğiyle başlatabilir ve GPG anahtarı (veya alt anahtarı) için keygrip komutunu ~ / .gnupg / sshcontrol içine ekleyebilirsiniz.

Mevcut kararlı GnuPG sürümünü (2.0.x) kullanırken, anahtarınızı gpg-agent'a eklemek için maymun küreyi kullanabilirsiniz (yine, --enable-ssh-support seçeneğiyle gpg-agent'ı başlattıktan sonra).

Maymun yardımı ile GNOME anahtarlığını (hatta normal ssh-agent'ını) kullanmak da mümkündür. Bu durumda tek sorun, tekrar giriş yaparken (Gnome veya XFCE içine) anahtarınızı tekrar eklemeniz gerekmesidir. Bunu çözmek için anahtarınızı manuel olarak dışa aktarabilir ve dönüştürebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.