Como transferir minhas chaves SSH para outra máquina?

42

Eu tenho contas em duas máquinas: H1 e H2. Criei chaves ssh no H1 e instalei no S1. Agora posso ssh para S1 a partir de H1. Eu quero fazer o mesmo com H2. Como instalo as chaves ssh geradas no H1 no H2?

Bruce
fonte
2
Como ssh-copy-idé uma solução mais infalível (sem sobrescrever as chaves existentes ou copiar acidentalmente a chave privada em vez da chave pública ) e uma solução menos conhecida, considere aceitar uma dessas respostas como a resposta aceita.
agtoever

Respostas:

28

Editado: se você possui as duas máquinas, poderá compartilhar sua chave privada. Mas esta solução não é segura para notebooks roubados ou para máquinas que você não possui.

Você pode copiar suas chaves privadas de H1 para H2, se desejar usar a mesma chave privada para poder efetuar login de H2 para S1. Quando você no H1 executa os comandos:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

Atenção! Isso excluirá e substituirá qualquer chave privada que você tivesse no H2.

A melhor maneira é gerar novas chaves privadas no H2 ( ssh-keygen) e instalar sua parte pública no S1 com o ssh-copy-idutil. Nesse caso mais seguro, você terá dois conjuntos de chaves; um é para login H1-S1 e o segundo para login H2-S1. Haverá duas chaves públicas autorizadas em S1. E você poderá revogar um deles ou ambos (por exemplo, quando seu notebook for roubado ou o proprietário da máquina decidir desativar sua conta e reutilizar todos os seus arquivos).

osgx
fonte
8
Copiar uma chave privada não é realmente uma boa ideia. Ter uma única chave em vários locais 1. torna mais vulnerável, 2. aumenta o risco de você perder o controle de todos os locais, 3. não permite desativar o acesso de apenas um local. Do ponto de vista da segurança, você deve gerar um novo par de chaves em cada local - a solução da Mu Qiao.
pabouk 4/09/13
27

Usar ssh-copy-id

SINOPSE

ssh-copy-id [-i [arquivo_de_identidade]] [usuário @] máquina

DESCRIÇÃO

ssh-copy-id é um script que usa ssh para efetuar login em uma máquina remota e anexar o arquivo de identidade indicado ao arquivo ~ / .ssh / allowed_keys dessa máquina.

Mu Qiao
fonte
1
@Eu quero fazer ssh de H2 para S1. Desejo transferir e instalar minha chave pública e privada de H1 para H2. Isso fará isso?
Bruce
3
@ Bruce não, você precisa gerar novamente as chaves em h2 e usar esse comando para copiar suas chaves. Outra abordagem é permitir que h1 e h2 compartilhem o diretório inicial.
Mu Qiao
9

Use duas chaves privadas

Configure o H2 usando o mesmo processo (mas não a mesma chave privada) que você fez ao configurar o H1:

  • Nunca há um bom motivo para copiar uma chave privada de outra máquina. Se você ainda não gerou uma nova chave privada no H2, faça-o agora. Gere também a chave pública correspondente. Em um terminal em H2,

tipo: ssh-keygen -t rsa

  • Copie a chave pública do seu H2 para o servidor. Em um terminal em H2,

tipo: ssh-copy-id [email protected]

(mas use seu nome de usuário real nos nomes de host de S1 e S1 e depois digite sua senha em S1 quando solicitada).

Isso instala a chave pública da sua estação de trabalho no ~/.ssh/authorized_keysarquivo desse usuário no servidor.

  • Não há etapa 3. A partir de agora, você pode efetuar login no S1 a partir do seu H2 e também fazer o login no S1 a partir do seu H1.

detalhes

Eu suponho que o que você realmente está perguntando é

  • Eu tenho um servidor ("S1")
  • Eu entro no meu servidor no meu laptop pessoal ("H1")
  • Também quero fazer login no meu servidor na minha estação de trabalho ("H2").

Qual é o caminho certo para fazer isso?

  • Suponho que poderia simplesmente fazer login com a mesma senha nos dois lugares. Esse não pode ser o caminho certo, porque todo mundo diz que a autenticação de chave pública é muito melhor que as senhas. (uma)
  • Suponho que poderia simplesmente copiar a chave privada do meu laptop para minha estação de trabalho. Esse não pode ser o caminho certo, porque todo mundo diz que a chave privada nunca deve sair da máquina do cliente.

As pessoas pensam que uma conta em um servidor tem um único nome de usuário e, é claro, uma única senha autorizada.

Sistemas de chave pública como ssh são melhores que o sistema de senhas: uma conta em um servidor tem um único nome de usuário e qualquer número de chaves públicas autorizadas , todas listadas no ~/.ssh/authorized_keysarquivo.

( mais detalhes ).

David Cary
fonte
Perdoe-me por me repetir .
David Cary
0

O ssh-copy-id faria o trabalho por você: http://linux.die.net/man/1/ssh-copy-id ?

Alex Wilson
fonte
@Eu quero fazer ssh de H2 para S1. Desejo transferir e instalar minha chave pública e privada de H1 para H2. Isso fará isso?
Bruce
2
Se você estiver logado no S1 ou H1 (que agora possui sua chave) usando ssh-copy-id, você poderá transferir sua chave pública (não privada) para o H2. Em geral, é melhor limitar o número de máquinas nas quais sua chave privada está instalada. Tente mantê-lo em algumas máquinas seguras apenas para evitar sua perda.
Como copio minha chave privada para o H2?
Bruce
0

Para mudar as chaves SSH de um computador para outro. Basta copiar a pasta inteira de ~ / .ssh de H1 (máquina antiga) para a pasta de conteúdo ~ / .ssh da nova máquina H2.

Agora tente:

ssh [email protected] (seu ip S1)

Provavelmente você receberá um aviso de permissão para corrigir essa execução:

chmod 400 ~ / .ssh / id_rsa

Agora novamente:

ssh [email protected] (seu ip S1)

Vai funcionar bem agora.

shaurya uppal
fonte