As chaves GPG e SSH são intercambiáveis?

58

Eu quero gerar uma chave RSA em GPG e usá-la em SSH login. Isso é possível? Se sim, como?

edit: veja a resposta do @wwerner, eu não tentei, mas parece ser a solução atual (a partir de 2018)

    
por destan 23.11.2011 / 01:03

4 respostas

28

Estou fazendo uma pesquisa sobre esse tópico e posso dar algumas dicas, mas ainda não encontrei uma maneira de fazer isso funcionar.

Monkeysphere

Monkeysphere parece um projeto muito interessante, mas não consegui compilá-lo no Mac OS X sem entupindo meu pequeno espaço livre em disco com o MacPorts.

Usando o gpgkey2ssh

A primeira maneira que sugiro que você tente é gerar uma entrada compatível de authorized_keys a partir do seu ID de chave (por exemplo, BFB2E5E3) com

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

Aqui, adicionei-o ao meu localhost 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

Usando o gpg-agent

gpg-agent tem a opção --enable-ssh-support que permite usá-lo como substituto imediato do bem conhecido ssh-agent . Eu li sobre algumas pessoas tentando adicionar via ssh-add sua chave GPG depois de lançar 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 eu não acho que isso funcionará. A página do gpg-agent diz:

SSH Keys, which are to be used through the agent, need to be added to the gpg-agent initially through the ssh-add utility.  When a key is added, ssh-add will ask for the password of the provided key file and send the unprotected key material to the agent; this causes the gpg-agent to ask for a passphrase, which is to be used for encrypting the newly received key and storing it in a gpg-agent specific directory.

Portanto, parece que gpg-agent deve ser usado como uma medida adicional para proteger suas chaves SSH com uma criptografia GPG.

Convertendo uma chave GPG para o OpenSSH

Jérôme Pouiller em seu blog escreve que o utilitário Gpgsm pode exportar chaves e certificados no PCSC12; eles podem então 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 ainda não encontrei uma forma de fazer gpgsm aceitar meus keypairs gpg.

Outras coisas que você pode experimentar

O SSH tem uma opção -I para especificar 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.

    
por 15.02.2012 / 13:46
14

Eu sei que este é um post antigo, mas para pessoas como eu, tropeçando nisso:

Agora é possível (desde o gpg 2.1) simplesmente extrair chaves ssh diretamente usando o gpg: gpg --export-ssh-key <key id>! .

A marca ! é opcional, torna a chave primária exportável e omite a verificação de que a chave é compatível com a autenticação ([CA]).

Detalhes:

por 17.01.2018 / 11:23
13

Não, eles não são intercambiáveis. Sim, é possível usar chaves GPG para autenticação - o pacote Monkeysphere tem ferramentas para extrair o par de chaves RSA bruto do seu certificado GPG.

  1. Seu certificado GPG precisará de uma subchave com o sinalizador de capacidade de "autenticação". Para criar essa subchave, execute uma vez:

    monkeysphere g
    
  2. Agora adicione suas subchaves de autenticação ao ssh-agent :

    monkeysphere s
    

Um pouco relevante: este tópico do gnupg-users .

    
por 23.11.2011 / 01:25
8

Com as informações das respostas desta pergunta e a ajuda da lista de discussão do 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 uma postagem no blog sobre algumas possíveis soluções: link

Para resumir: Ou você usa o GnuPG 2.1, que está atualmente em beta. Ao usar esta versão, você pode simplesmente iniciar o gpg-agent com a opção --enable-ssh-support e adicionar o keygrip para sua chave GPG (ou subchave) em ~ / .gnupg / sshcontrol.

Quando você estiver usando a atual versão estável do GnuPG (2.0.x), você pode usar o monkeysphere para adicionar sua chave ao gpg-agent (novamente, após iniciar o gpg-agent com a opção --enable-ssh-support). / p>

Também é possível usar o chaveiro do GNOME (ou até mesmo o agente ssh regular) com a ajuda da monkeysphere. O único problema neste caso é que você terá que adicionar novamente sua chave ao fazer o login novamente (no Gnome ou no XFCE). Para resolver isso, você pode exportar manualmente sua chave e convertê-la.

    
por 02.08.2012 / 12:37