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?

Yarin
fonte

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.

Jeremy Bouse
fonte
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.

vmfarms
fonte
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]

Jacob Church
fonte
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

raio
fonte
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