Como usar gpg e SSH juntos? [duplicado]

11

Possível duplicado: as
chaves GPG e SSH são intercambiáveis?

Como usar gpg e SSH juntos?

Conheço os procedimentos básicos de 1) usar gpg para criptografar e descriptografar arquivos de texto e 2) gerar e usar chaves SSH para acessar servidores remotos sem senhas.

Gostaria de saber se os dois podem ser integrados. Os dois não estão relacionados e devem ser separados no uso diário?

qazwsx
fonte

Respostas:

7

Estou pesquisando sobre esse tópico e posso dar algumas dicas, mas ainda não encontrei uma maneira de fazê-lo funcionar.

Monkeysphere

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.

Usando gpgkey2ssh

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

Usando gpg-agent

gpg-agenttem a opção --enable-ssh-supportque permite usá-lo como um substituto para o conhecido ssh-agent. Eu li algumas pessoas tentando adicionar por meio da ssh-addchave GPG após o lançamento gpg-agentdesta 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-agentdeve ser usado como uma medida adicional para proteger suas chaves SSH com uma criptografia GPG.

Convertendo uma chave GPG para OpenSSH

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 gpgsmaceitar meus pares de chaves gpg.

Outras coisas que você pode tentar

O SSH tem uma -Iopção para especificar que a biblioteca compartilhada PKCS # 11 sshdeve usar para se comunicar com um token PKCS # 11, fornecendo a chave RSA privada do usuário. ssh-keygenpode 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 -ie -m.

Ainda não consigo encontrar uma maneira de juntar tudo.

Claudio Floreani
fonte
1
Para referência futura, se você encontrar duas perguntas essencialmente idênticas, poderá sinalizá-las como duplicadas (usando o flaglink abaixo da pergunta), em vez de postar a mesma resposta duas vezes. Obrigado pela resposta detalhada!
Nhinkle
Desculpe, eu não sei sobre esse recurso. Obrigado
Claudio Floreani
2
Não tenho certeza do que você está tentando realizar gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Você está usando teeapenas para ver a saída? A saída deste comando não é adequada para uso por ssh-add; o gerado id_rsaarquivo não pode ser carregado em qualquer ssh-agentou gpg-agent, nem pode ser utilizado directamente por ssh.
larsks
2

Tecnicamente sim, as chaves PGP podem ser usadas para autenticação SSH. O que as pessoas chamam de "chave PGP" é mais um certificado , contendo RSA, ECDSA ou outros pares de chaves comuns (a chave primária e subchaves), juntamente com os metadados do certificado. De fato, existe até um sinalizador de uso "autenticação" definido.

Não é recomendável usar a mesma chave para várias finalidades; no entanto, isso é facilmente resolvido, pois você pode adicionar facilmente uma subchave somente de autenticação ao seu certificado PGP (via gpg --expert --edit-key). Você terá uma chave primária de assinatura / certificação, uma subchave de criptografia e uma subchave de autenticação.

Na prática, porém, não consegui descobrir como autenticar usando uma chave PGP diretamente, embora tenha sido preguiçoso demais para experimentar várias idéias. O conjunto Monkeysphere possui uma ferramenta para adicionar suas subchaves de autenticação GPG ao ssh-agent, deve ser simples. Mas deve haver algumas postagens mais antigas do Superusuário sobre isso.

user1686
fonte
Obrigado pela informação. Eles são úteis, mas não suficientes para responder à minha pergunta. Ainda não sei como integrar meus certificados PGP e chaves SSH.
precisa saber é o seguinte
De documentos da Monkeysphere; monkeysphere subkey-to-ssh-agentpara carregar sua chave no agente.
usar o seguinte comando