Respostas:
Eu sei que este é um post antigo, mas para pessoas como eu tropeçando nisso:
É agora (desde gpg 2.1) possível simplesmente extrair as chaves SSH diretamente usando gpg:
gpg --export-ssh-key <key id>!
.
A !
marca é opcional, torna a chave primária exportável e omite a verificação se a chave é compatível com autenticação ([CA]).
Detalhes:
Estou pesquisando sobre esse tópico e posso dar algumas dicas, mas ainda não encontrei uma maneira de fazê-lo funcionar.
O Monkeysphere parece um projeto muito interessante, mas não consegui compilá-lo no Mac OS X sem obstruir meu pequeno espaço livre em disco com o MacPorts.
A primeira maneira que sugiro que você tente é gerar uma entrada compatible_keys compatível a partir do seu ID de chave (por exemplo, BFB2E5E3) com
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Aqui eu o adicionei ao meu host local desde que executei um servidor ssh para fins de teste, mas é claro que você deve adicioná-lo ao host de destino ~/.ssh/authorized_keys
. Em seguida, você precisa dizer ao SSH para usar a parte privada dessa chave durante a autenticação, mas simplesmente exportar uma versão blindada ASCII do par de chaves não funciona:
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
tem a opção --enable-ssh-support
que permite usá-lo como um substituto para o bem conhecido ssh-agent
. Eu li algumas pessoas tentando adicionar por meio da ssh-add
chave GPG após o lançamento gpg-agent
desta maneira:
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
Mas acho que isso nunca funcionará. A página de manual do gpg-agent diz:
As chaves SSH, que devem ser usadas por meio do agente, precisam ser adicionadas ao gpg-agent inicialmente por meio do utilitário ssh-add. Quando uma chave é adicionada, o ssh-add solicita a senha do arquivo de chaves fornecido e envia o material da chave não protegido ao agente; isso faz com que o gpg-agent solicite uma senha, que deve ser usada para criptografar a chave recém-recebida e armazená-la em um diretório específico do gpg-agent.
Portanto, parece que gpg-agent
deve ser usado como uma medida adicional para proteger suas chaves SSH com uma criptografia GPG.
Jérôme Pouiller em seu blog escreve que o utilitário Gpgsm pode exportar chaves e certificados no PCSC12; eles podem ser usados pelo 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
Mas não encontrei uma maneira de gpgsm
aceitar meus pares de chaves gpg.
O SSH tem uma -I
opção para especificar que a biblioteca compartilhada PKCS # 11 ssh
deve usar para se comunicar com um token PKCS # 11, fornecendo a chave RSA privada do usuário.
ssh-keygen
pode usar a chave pública ou privada RFC4716 / SSH2, chaves públicas PEM PKCS8 e chaves públicas PEM para gerar uma chave privada (ou pública) compatível com OpenSSH usando as opções -i
e -m
.
Ainda não consigo encontrar uma maneira de juntar tudo.
gpgkey2ssh
foi substituído pela --export-ssh-key
versão 2.1.11 (26-01-16 2016). Levei um tempo para perceber isso. O uso é gpg --export-ssh-key BFB2E5E3
.
Não, eles não são intercambiáveis. Sim, é possível usar chaves GPG para autenticação - o pacote Monkeysphere possui ferramentas para extrair o par de chaves bruto RSA do seu certificado GPG.
Seu certificado GPG precisará de uma subchave com o sinalizador de capacidade "autenticação". Para criar essa subchave, execute uma vez:
monkeysphere g
Agora adicione suas subchaves de autenticação ao ssh-agent :
monkeysphere s
Um pouco relevante: esse tópico do gnupg-users .
Com as informações das respostas desta pergunta e a ajuda da lista de discussão gnupg-users, consegui descobrir como usar minha chave GPG para autenticação SSH. Como já mencionado por Claudio Floreani em sua resposta, existem alguns métodos possíveis para fazer isso.
Eu escrevi um post no blog sobre algumas soluções possíveis: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Para resumir: Você pode usar o GnuPG 2.1, que está atualmente na versão beta. Ao usar esta versão, você pode simplesmente iniciar o gpg-agent com a opção --enable-ssh-support e adicionar o keygrip da sua chave GPG (ou subchave) em ~ / .gnupg / sshcontrol.
Quando você estiver usando a versão estável atual do GnuPG (2.0.x), poderá usar o monkeysphere para adicionar sua chave ao gpg-agent (novamente, depois de iniciar o gpg-agent com a opção --enable-ssh-support).
Também é possível usar o chaveiro GNOME (ou mesmo o agente ssh comum) com a ajuda do monkeysphere. O único problema nesse caso é que você precisará adicionar novamente sua chave ao fazer logon novamente (no Gnome ou no XFCE). Para resolver isso, você pode exportar manualmente sua chave e convertê-la.