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-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 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-agent
należ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 gpgsm
zaakceptować moje pary kluczy gpg.
Inne rzeczy, których możesz spróbować
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ć.
flag
linku pod pytaniem), zamiast dwa razy zamieszczać tę samą odpowiedź. Dzięki za szczegółową odpowiedź!gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
. Czy używasztee
tylko, aby zobaczyć wynik? Dane wyjściowe tego polecenia nie są odpowiednie do użycia przezssh-add
; wygenerowanyid_rsa
plik nie mogą być ładowane do albossh-agent
lubgpg-agent
, nie może być stosowany bezpośredniossh
.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.
źródło
monkeysphere subkey-to-ssh-agent
aby załadować klucz do agenta.