A maneira mais fácil de copiar chaves ssh para outra máquina?

Eu sou preguiçoso em casa e uso a autenticação por senha para as minhas máquinas em casa. Estou pronto para passar para a autenticação baseada em chaves. Há muitas opções na web sobre como fazer isso, incluindo passar a chave, passar a chave diretamente, etc.

Estou procurando a maneira mais fácil e recomendada de copiar uma chave, espero que haja uma embalagem de conveniência em algum lugar no pacote ssh do Ubuntu?

I'já estou ciente em como desligar logins de senha.

Solução

O comando ssh-copy-id (no pacote **openssh-client*** e instalado por padrão) faz exatamente isso:

ssh-copy-id user@hostname.example.com

copia a chave pública da sua identidade padrão (utilize -i identity_file para outras identidades) para o host remoto.

A identidade padrão é a sua "standard" ssh key. Ela consiste em dois arquivos (chave pública e privada) no seu diretório ~/.ssh, normalmente chamado identidade, id_rsa, id_dsa, id_ecdsa ou id_ed25519 (e o mesmo com .pub), dependendo do tipo de chave. Se você não criou mais de uma chave ssh, você não precisa se preocupar em especificar a identidade, o ssh-copy-id irá apenas selecioná-la automaticamente.

Caso você não tenha uma identidade, você pode gerar uma com a ferramenta ssh-keygen.

Além disso, se o servidor utiliza uma porta diferente da padrão (22) você deve utilizar aspas desta forma (fonte):

ssh-copy-id "user@hostname.example.com -p "
Comentários (8)

Eu gosto da resposta do Marcel. Eu não conhecia esta ordem. I'sempre estive usando o que eu tinha encontrado no site Oracle:

cat ~/.ssh/id_rsa.pub | ssh @ 'cat >> .ssh/authorized_keys && echo "Key copied"'

Pensei em publicá-lo aqui ainda, porque é uma boa ilustração do que pode ser alcançado em código da concha com o poder do ssh. Mas utilizar o ssh-copy-id é definitivamente uma forma mais segura de o fazer correctamente!

Note que se a pasta .ssh ainda não existir, o comando acima irá falhar. Além disso, pode ser melhor ao criar o arquivo para definir uma permissão mínima possível (basicamente leitura-escrita apenas para o proprietário). Aqui está um comando mais avançado:

cat ~/.ssh/id_rsa.pub | ssh @ 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
Comentários (5)

Método gráfico

  1. Abrir AplicaçõesPasswords and KeysMinhas Chaves Pessoais.
  2. Selecione sua chave e clique em RemoteConfigure Key for Secure Shell.

Comentários (5)