Jak korzystać z gpg i SSH razem? [duplikować]

11

Możliwa duplikat:
Czy klucze GPG i SSH są wymienne?

Jak korzystać z gpg i SSH razem?

Znam podstawowe procedury 1) używania gpg do szyfrowania i deszyfrowania plików tekstowych oraz 2) generowania i używania kluczy SSH w celu uzyskania dostępu do zdalnych serwerów bez haseł.

Zastanawiam się, czy można je zintegrować. Czy oba są ze sobą niezwiązane i powinny być rozdzielone w codziennym użytkowaniu?

qazwsx
źródło

Odpowiedzi:

7

Robię badania na ten temat i mogę dać ci kilka wskazówek, ale nie znalazłem jeszcze sposobu, aby to zadziałało.

Monkeysphere

Monkeysphere wydaje się bardzo interesującym projektem, ale nie udało mi się go skompilować pod Mac OS X bez zatykania mojego małego wolnego miejsca na dysku MacPorts.

Korzystanie z gpgkey2ssh

Pierwszym sposobem, który sugeruję, jest próba wygenerowania zgodnego wpisu uprawnionych kluczy na podstawie identyfikatora klucza (np. BFB2E5E3) za pomocą:

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

Tutaj dodałem go do mojego lokalnego hosta, ponieważ uruchomiłem serwer ssh do celów testowych, ale oczywiście powinieneś dodać to do hosta docelowego ~/.ssh/authorized_keys. Następnie musisz powiedzieć SSH, aby używał prywatnej części tego klucza podczas uwierzytelniania, ale po prostu eksportowanie zbrojonej wersji pary kluczy ASCII nie działa:

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

Korzystanie z gpg-agent

gpg-agentma opcję, --enable-ssh-supportktóra pozwala mu używać go jako zamiennika dla dobrze znanego ssh-agent. Czytałem o niektórych ludziach, którzy próbują dodać ssh-addswój klucz GPG po uruchomieniu w gpg-agentten sposób:

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

Ale nie sądzę, żeby to kiedykolwiek zadziałało. Strona gpg-agent mówi:

Klucze SSH, które mają być używane przez agenta, należy najpierw dodać do gpg-agent za pomocą narzędzia ssh-add. Po dodaniu klucza ssh-add poprosi o hasło do dostarczonego pliku kluczy i wyśle ​​niezabezpieczony materiał klucza do agenta; powoduje to, że gpg-agent prosi o hasło, które ma być użyte do szyfrowania nowo otrzymanego klucza i przechowywania go w katalogu specyficznym dla gpg-agent.

Wygląda więc na to, że gpg-agentnależy to wykorzystać jako dodatkowy środek do ochrony kluczy SSH za pomocą szyfrowania GPG.

Konwersja klucza GPG na OpenSSH

Jérôme Pouiller na swoim blogu pisze, że narzędzie Gpgsm może eksportować klucze i certyfikaty w PCSC12; mogą być następnie używane przez 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

Ale nie znalazłem sposobu, aby gpgsmzaakceptować moje pary kluczy gpg.

Inne rzeczy, których możesz spróbować

SSH ma -Iopcję określenia biblioteki współużytkowanej PKCS # 11, która sshpowinna być używana do komunikacji z tokenem PKCS # 11 zapewniającym prywatny klucz RSA użytkownika. ssh-keygenmoże używać klucza publicznego lub prywatnego RFC4716 / SSH2, kluczy publicznych PEM PKCS8 i kluczy publicznych PEM do generowania klucza prywatnego (lub publicznego) zgodnego z OpenSSH przy użyciu opcji -ii -m.

Nadal nie mogę znaleźć sposobu, aby to wszystko połączyć.

Claudio Floreani
źródło
1
Na przyszłość, jeśli znajdziesz dwa identyczne pytania, możesz oflagować je jako duplikaty (używając flaglinku pod pytaniem), zamiast dwa razy zamieszczać tę samą odpowiedź. Dzięki za szczegółową odpowiedź!
nhinkle
Niestety nie wiem o tej funkcji. Dziękuję
Claudio Floreani
2
Nie jestem pewien, co próbujesz osiągnąć gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Czy używasz teetylko, aby zobaczyć wynik? Dane wyjściowe tego polecenia nie są odpowiednie do użycia przez ssh-add; wygenerowany id_rsaplik nie mogą być ładowane do albo ssh-agentlub gpg-agent, nie może być stosowany bezpośrednio ssh.
larsks
2

Technicznie tak, klucze PGP mogą być używane do uwierzytelniania SSH. To, co ludzie nazywają „kluczem PGP”, to raczej certyfikat zawierający zwykłe RSA, ECDSA lub inne pary kluczy (klucz podstawowy i podklucze) wraz z metadanymi certyfikatu. W rzeczywistości zdefiniowano nawet flagę użycia „uwierzytelniania”.

Nie zaleca się jednak używania tego samego klucza do wielu celów; Można to jednak łatwo rozwiązać, ponieważ można łatwo dodać podklucz tylko do uwierzytelnienia do certyfikatu PGP (via gpg --expert --edit-key). Będziesz miał jeden klucz podstawowy do podpisywania / certyfikacji, podklucz szyfrowania i podklucz uwierzytelniania.

W praktyce jednak nie byłem w stanie dowiedzieć się, jak uwierzytelniać przy użyciu klucza PGP, chociaż byłem zbyt leniwy, by wypróbować kilka pomysłów. Pakiet Monkeysphere ma narzędzie do dodawania podkluczy uwierzytelniania GPG do ssh-agent, powinno być proste. Ale powinno być na ten temat kilka starszych postów dla superużytkowników.

użytkownik1686
źródło
Dzięki za informację. Są przydatne, ale niewystarczające do udzielenia odpowiedzi na moje pytanie. Nadal nie wiem, jak zintegrować moje certyfikaty PGP i klucze SSH.
qazwsx
Z dokumentów Monkeysphere; monkeysphere subkey-to-ssh-agentaby załadować klucz do agenta.
user1686,