Gpg ve SSH birlikte nasıl kullanılır? [çiftleme]


11

Olası Çoğaltma:
GPG ve SSH anahtarları değiştirilebilir mi?

Gpg ve SSH birlikte nasıl kullanılır?

Ben 1) metin dosyalarını şifrelemek ve şifresini çözmek için gpg kullanarak ve 2) şifre olmadan uzak sunuculara erişmek için SSH anahtarları oluşturmak ve kullanmak temel prosedürleri biliyorum.

İkisinin entegre edilip edilemeyeceğini merak ediyorum. İkisi ilgisiz mi ve günlük kullanımlarında ayrılması mı gerekiyor?

Yanıtlar:


7

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örünüyor, ancak MacPorts ile küçük boş disk alanımı tıkamadan Mac OS X altında derleyemedim.

Gpgkey2ssh kullanma

Denemenizi tavsiye etmenin ilk yolu, anahtar kimliğinizden (örn., BFB2E5E3) uyumlu bir yetkili_anahtarlar girişi oluşturmaktır:

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

Test amacıyla bir ssh sunucusu çalıştırdığım için burada localhost'a 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 sadece anahtar çiftinin ASCII zırhlı sürümünü dışa aktarmak 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 yedek yedek olarak kullanmasına izin veren seçeneğe sahiptir ssh-agent. Bu şekilde ssh-addbaşlattıktan sonra GPG anahtarıyla eklemeye çalışan bazı insanları 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 SSH Anahtarlarının, ilk olarak ssh-add yardımcı programı aracılığıyla gpg-agent'a eklenmesi gerekir. Bir anahtar eklendiğinde, ssh-add sağlanan anahtar dosyasının parolasını soracak ve korumasız anahtar malzemeyi aracıya gönderecektir; bu, gpg-agent'ın yeni alınan anahtarı şifrelemek ve gpg-agent'a özgü bir dizinde saklamak için kullanılacak bir parola istemesine neden olur.

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

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

Onun içinde Jérôme Pouiller blogunda Gpgsm yarar PCSC12 anahtarları ve sertifikaları verebilirsiniz yazıyor; daha sonra OpenSSH tarafından kullanılabilir:

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 anahtar çiftlerimi kabul etmenin bir yolunu bulamadım .

Deneyebileceğiniz diğer şeyler

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

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


1
İleride başvurmak için, esas olarak özdeş olan iki soru bulursanız flag, aynı cevabı iki kez göndermek yerine bunları kopya olarak ( sorunun altındaki bağlantıyı kullanarak) işaretleyebilirsiniz . Yine de ayrıntılı yanıt için teşekkürler!
nhinkle

Üzgünüm, bu özellik hakkında bir fikrim yok. Teşekkür ederim
Claudio Floreani

2
Neyi başarmaya çalıştığınızdan emin değilim gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. teeÇıktıyı görebilmek için mi kullanıyorsunuz ? Bu komutun çıktısı ssh-add; oluşturulan id_rsadosya ya içine yüklenemez ya ssh-agentda gpg-agentdoğrudan tarafından kullanılamaz ssh.
larsks


2

Teknik olarak evet, PGP anahtarları SSH kimlik doğrulaması için kullanılabilir. İnsanların bir "PGP anahtarı" daha taşımaktadır diyoruz sertifikası sıradan RSA, ECDSA veya sertifikanın meta verileri ile birlikte diğer keypairs (birincil anahtar ve alt anahtarları) içeren. Aslında, tanımlanmış bir "kimlik doğrulama" kullanım bayrağı bile vardır.

Yine de aynı anahtarın birden fazla amaç için kullanılması önerilmez; ancak, PGP sertifikanıza (üzerinden gpg --expert --edit-key) kolayca yalnızca kimlik doğrulama alt anahtarı ekleyebileceğiniz için bu kolayca çözülür . Bir imzalama / sertifika birincil anahtarınız, bir şifreleme alt anahtarınız ve bir kimlik doğrulama alt anahtarınız olacaktır.

Yine de pratikte, doğrudan bir PGP anahtarı kullanarak nasıl kimlik doğrulaması yapacağımı anlayamadım , ancak birkaç fikir denemek için çok tembel oldum. Monkeysphere paketi, GPG kimlik doğrulama alt anahtarlarınızı ssh-agent'a eklemek için bir araca sahiptir, basit olmalıdır. Ancak bununla ilgili birkaç eski Süper Kullanıcı yayını olmalıdır.


Bilgi için teşekkürler. Bunlar yararlı ama sorumu cevaplamak için yeterli değil. Hala PGP sertifikalarımı ve SSH anahtarlarımı nasıl entegre edeceğimi bilmiyorum.
qazwsx

Monkeysphere belgelerinden; monkeysphere subkey-to-ssh-agentanahtarınızı aracıya yüklemek için.
user1686
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.