Odpowiedzi:
Wiem, że to stary post, ale dla takich osób jak ja potykają się o to:
Jest obecnie (od gpg 2.1) można łatwo wyodrębnić klucze ssh bezpośrednio za pomocą GPG:
gpg --export-ssh-key <key id>!
.
!
Znak jest opcjonalne, to sprawia, że klucz podstawowy eksportowane i pomija sprawdzanie, czy klucz jest uwierzytelnienie-zdolny ([CA]).
Detale:
Robię badania na ten temat i mogę dać ci kilka wskazówek, ale nie znalazłem jeszcze sposobu, aby to zadziałało.
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.
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 lokalnego hosta, ponieważ uruchomiłem serwer ssh w celach 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
gpg-agent
ma opcję, --enable-ssh-support
któ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-add
swój klucz GPG po uruchomieniu w gpg-agent
ten 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 za pośrednictwem 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-agent
należy to wykorzystać jako dodatkowy środek do ochrony kluczy SSH za pomocą szyfrowania GPG.
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 gpgsm
zaakceptować moje pary kluczy gpg.
SSH ma -I
opcję określenia biblioteki współużytkowanej PKCS # 11, która ssh
powinna być używana do komunikacji z tokenem PKCS # 11 zapewniającym prywatny klucz RSA użytkownika.
ssh-keygen
moż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 -i
i -m
.
Nadal nie mogę znaleźć sposobu, aby to wszystko połączyć.
gpgkey2ssh
został zastąpiony --export-ssh-key
wersją 2.1.11 (26.01.2016). Zajęło mi to trochę czasu, aby to zrozumieć. Wykorzystanie jest gpg --export-ssh-key BFB2E5E3
.
Nie, nie są wymienne. Tak, do uwierzytelnienia można użyć kluczy GPG - pakiet Monkeysphere zawiera narzędzia do wyodrębnienia surowej pary kluczy RSA z certyfikatu GPG.
Twój certyfikat GPG będzie potrzebował podklucza z flagą możliwości „uwierzytelniania”. Aby utworzyć taki podklucz, uruchom raz:
monkeysphere g
Teraz dodaj swoje podklucze uwierzytelniania do ssh-agent :
monkeysphere s
Nieco istotne: ten wątek użytkowników gnupg .
Dzięki informacjom zawartym w odpowiedziach na to pytanie oraz przy pomocy listy mailingowej gnupg-users mogłem dowiedzieć się, jak używać mojego klucza GPG do uwierzytelniania SSH. Jak już wspomniał Claudio Floreani w swojej odpowiedzi, istnieje kilka możliwych metod, aby to zrobić.
Napisałem blog na temat niektórych możliwych rozwiązań: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Podsumowując: Albo używasz GnuPG 2.1, który jest obecnie w fazie beta. Korzystając z tej wersji, możesz po prostu uruchomić gpg-agent z opcją --enable-ssh-support i dodać klucz dla twojego klucza GPG (lub podklucza) do ~ / .gnupg / sshcontrol.
Kiedy używasz bieżącej stabilnej wersji GnuPG (2.0.x), możesz użyć monkeysphere, aby dodać swój klucz do gpg-agent (ponownie, po uruchomieniu gpg-agent z opcją --enable-ssh-support).
Możliwe jest również użycie kluczy GNOME (lub nawet zwykłego agenta ssh) za pomocą monkeysphere. Jedynym problemem w tym przypadku jest to, że będziesz musiał ponownie dodać swój klucz przy ponownym logowaniu (do Gnome lub XFCE). Aby rozwiązać ten problem, możesz ręcznie wyeksportować swój klucz i przekonwertować go.