Como contornar a porta hkp de saída bloqueada para chaves apt


35

Estou usando o Ubuntu 9.10 e preciso adicionar alguns repositórios apt. Infelizmente, recebo mensagens como esta ao executar sudo apt-get update:

W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A9BF3BB4E5E17B5
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1DABDBB4CEC06767

Então, preciso instalar as chaves para esses repositórios. Na versão 9.10, agora temos a opção de fazer isso:

sudo add-apt-repository ppa:nvidia-vdpau/ppa

Veja este artigo de ajuda do Ubuntu para obter detalhes.

Isso é ótimo, exceto que eu estou executando isso em uma estação de trabalho atrás de um firewall que bloqueia as conexões de saída para praticamente todas as portas, exceto aquelas exigidas pelos secretários que executam o Windows e o IE.

A porta em questão aqui é o serviço hkp, porta 11371.

Parece haver maneiras de baixar manualmente as chaves e instalá-las no chaveiro do apt. Pode até haver uma maneira de usar o add-apt-repository ou o wget ou algo para baixar uma chave de um servidor alternativo, disponibilizando-a na porta 80.

No entanto, ainda não encontrei um conjunto conciso de etapas para fazer isso. O que estou procurando é:

  1. Como encontrar uma chave pública para um pacote apt (recomendações para recursos que possuem essas e / ou dicas para pesquisar. A busca pelo hash da chave não parece tão eficaz até agora).
  2. Como recuperar uma chave (isso pode ser feito automaticamente usando gpg ou add-apt-repository?)
  3. Como adicionar uma chave ao chaveiro do apt

Desde já, obrigado.

Respostas:


38

Isso foi corrigido na próxima versão Natty do Ubuntu: https://launchpad.net/ubuntu/natty/+source/software-properties/0.78.1

Aqueles que usam uma versão mais antiga precisam editar o ppa.py:

sudo gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py

Onde diz:

keyserver.ubuntu.com

mudar para:

hkp://keyserver.ubuntu.com:80

Salve, saia e esperamos que esteja pronto.


1
Impressionante - resolveu o meu problema!
Fedearne

14
Em 10.10, em vez de editar este arquivo de origem que eu poderia simplesmente chamarsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys KEY_HASH
l0b0

hkp://keyserver.ubuntu.com:80funciona em 10.04 também.
bd808

1
+1 para uso--keyserver hkp://keyserver.ubuntu.com:80
rogeriolino

19
sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://proxy:port --recv-keys KEYID

13

Aqui está uma solução alternativa que usei:

Eu entrei em um servidor Linux no mundo livre além do firewall corporativo e fiz o seguinte:

gpg --keyserver keyserver.ubuntu.com --recv 1DABDBB4CEC06767 && gpg --export --armor 1DABDBB4CEC06767

Então, na minha estação de trabalho, eu executei isso e colei a saída do comando acima (a chave pública) no stdin, seguido pelo control-D:

sudo apt-key add -

Então eu fui capaz de executar sudo apt-get updatesem problemas.

Eu ainda acho que tem que haver uma maneira melhor, idealmente algo que eu possa escrever.


"Eu entrei em um servidor Linux no mundo livre" Não é muito provável que alguém consiga fazer isso, mesmo que o hkp esteja bloqueado.
Gtvdijk

^ talvez supondo que você esteja vivendo em um regime repressivo e não em algum departamento de TI bizantino. Posso fazer o SSH em qualquer lugar que eu quiser quando estiver em uma VPN, mas não há pacotes DNS (e aparentemente nenhum HKP.) Isso é exatamente o que eu precisava.
Kingdon

8

Tenho outra solução aqui, que pode ser útil se você não conseguir encontrar outro servidor Linux fora da sua rede como proxy. Envie um e-mail para "pgp-public-keys@pgp.mit.edu" como o assunto como "get 0x1DABDBB4CEC06767". Mas você provavelmente ainda não pode escrever um script simples para automatizar isso.


5

Você pode acessar o site do servidor de chaves, por exemplo, http://wwwkeys.eu.pgp.net/ Pesquise a assinatura da chave (é necessário adicionar 0x à assinatura hexadecimal), ou seja, 0x1DABDBB4CEC06767.

Clique no link que você espera obter e colar o texto em um arquivo na máquina, ou seja,

cat > <filename>

[PASTE]

[Ctrl-C]

Então

apt-key add <filename>

Isso funcionou bem pra mim; parece que meu proxy de trabalho bloqueia muitas portas "não-padrão".


Esta é a única maneira que funcionou para mim. Meu proxy está bloqueando fortemente o protocolo hkp e, mesmo que eu use a porta 80, o gpg ainda excede o tempo de contato com um servidor. Dessa forma, finalmente consegui adicionar a chave.
Alexander Amelkin 14/09/16

4

Eu encontrei uma maneira elegante de fazê-lo em um único comando através da porta 80, que está sempre aberta para o tráfego www.

http://gurrier.wordpress.com/2010/10/02/downlolading-repo-keys-from-behind-a-corporate-firewall/


2
apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys ...
vorburger

1
Olá e bem-vindo ao superusuário. Ao responder perguntas, responda à pergunta com a solução na própria resposta. Não há garantia de que o site que você consultou o manterá ativo e, se for desativado, sua resposta será inútil.
Mogget

2

Uma solução simples é:

sudo add-apt-repository --keyserver hkps://keyserver.ubuntu.com:443 some_ppa

O https seguro (saída 443) não seria bloqueado pelo firewall.


1

Eu simplesmente uso ssh para encaminhar a porta para um host externo e, em seguida, execute o apt-add-repocomando

ssh -fqTnN -D 11371 <user@host>

-1

Eu tive o mesmo problema com o gpg. A solução alternativa ao adicionar a porta ao nome do servidor funcionou editando meu ~/.gnupg/gpg.confarquivo. No entanto, ainda vou pedir ao administrador do sistema que abra a porta de saída 11371, para que não precise me preocupar com isso novamente.


O porto? Como a especificação da porta (11371) na configuração funciona em torno do firewall?
0xC0000022L
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.