Usando a mesma chave privada SSH em várias máquinas


23

Eu tenho um repositório do Github que quero acessar de duas máquinas Linux diferentes.

Para a primeira máquina, segui as instruções do Github para gerar chaves SSH e adicionei a chave pública resultante ao Github. Este cliente funciona bem.

Para o segundo cliente, copiei o /home/{user}/.ssh/id_rsaarquivo do primeiro cliente. Eu pensei que isso poderia ser tudo o que eu tinha que fazer, mas quando tento conectar, recebo 'Permissão negada (chave pública)'.

o que estou perdendo?

Respostas:


32

A mesma chave SSH deve poder ser usada de vários clientes. Eu tenho chaves SSH diferentes para redes diferentes e elas são realmente armazenadas em uma unidade USB criptografada que eu uso de vários computadores diferentes sem problemas.

O SSH é muito exigente quanto às permissões de arquivo, então eu primeiro verificaria todas as permissões /home/{user}, até o id_rsapróprio arquivo.

O SSH realmente não se importa com permissões de gravação em grupo ou mundo, portanto, certifique-se de que chmod go-wseu diretório pessoal e o ~/.sshdiretório para iniciantes. Eu também garantiria que eles pertencessem ao seu usuário chown ${USER}:${USER}.

Para a própria chave SSH eu chmod 600os ...

Se você quiser, tenho informações adicionais sobre como gerenciar minhas chaves SSH na minha resposta a outra pergunta SSH.


3
Foi o Do permissions- não tem representante para upvote, mas muito obrigado
— Yarin

6

Se você está recebendo permissão negada do final do Github, pode ser que ele não esteja pegando seu arquivo de chave SSH copiado, mas o padrão do sistema. Uma maneira fácil de contornar isso é criar um ~/.ssh/configarquivo excelente e colocar o seguinte:

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

Isso forçará o seu cliente SSH a usar essa chave apenas no github.com.

Espero que isto ajude.


2
Não tem representante para upvote mas graças
— Yarin

1

Sei que isso é antigo, mas pensei em apontar que você também precisa copiar a chave pública para o segundo cliente

(ou recompute-o com ssh-keygen -y -f ~ / .ssh / id_rsa_ ..> ~ / .ssh / id_rsa ... pub)

A partir de 1]:

  1. Método de autenticação de chave pública: "publickey"

    A única autenticação NECESSÁRIA 'nome do método' é a
    autenticação "publickey" . Todas as implementações devem apoiar este método;
    no entanto, nem todos os usuários precisam ter chaves públicas, e a maioria das
    políticas locais provavelmente não exige autenticação de chave pública para todos os
    usuários em um futuro próximo.

    Com esse método, a posse de uma chave privada serve como
    autenticação. Este método funciona enviando uma assinatura criada
    com uma chave privada do usuário. O servidor DEVE verificar se a chave
    é um autenticador válido para o usuário e DEVE verificar se a
    assinatura é válida. Se ambos mantiverem, o pedido de autenticação DEVE ser
    aceito; caso contrário, DEVE ser rejeitado. Observe que o servidor PODE
    exigir autenticações adicionais após uma autenticação bem-sucedida.

Seu cliente ssh inicia a autenticação enviando a chave pública (a assinatura mencionada em negrito acima) para o servidor. O servidor, se a chave pública for uma chave autorizada, envia um ID de sessão aleatória de volta ao seu cliente. Seu cliente codifica a ID da sessão com a chave privada e a envia de volta ao servidor. O servidor decodifica esse ID da sessão usando a chave pública e, se ele corresponder ao ID da sessão original, autentica seu cliente.

[1] [ http://www.openssh.org/txt/rfc4252.txt[[1]


0

Provavelmente porque você não copiou a permissão do arquivo no segundo cliente.
Mas uma chave privada é privada , o caminho certo é criar uma nova chave privada no segundo cliente e depois adicionar sua chave pública ao Github


Eu estava pensando em fazer 1 par de chaves por usuário nos vários clientes de cada usuário. Mas um par de chaves para cada cliente de cada usuário me parece que ficaria fora de controle ...?
— Yarin

Se você usar a mesma chave privada para cada usuário em cada máquina, ela parecerá correta. Basta verificar a permissão se você copiar usando o sinalizador scp com -p, ele deve estar ok #
— radius
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.