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

285

Eu sou preguiçoso em casa e uso a autenticação de senha para minhas máquinas domésticas. Estou pronto para mudar para a autenticação baseada em chave. Há muitas opções na Web sobre como fazer isso, incluindo catting, em seguida, passar a chave, scping a chave diretamente, etc.

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

Eu já estou ciente de como desligar logins de senhas .

    
O
por Jorge Castro 27.09.2010 / 22:24
fonte

5 respostas

393

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 (use -i identity_file para outras identidades) para o host remoto.

A identidade padrão é sua chave ssh "padrão". Ele consiste em dois arquivos (chave pública e privada) no diretório ~/.ssh , normalmente denominado identity , id_rsa ou id_dsa (e o mesmo com .pub ), dependendo do tipo de chave. Se você não criou mais de uma chave ssh, não precisa se preocupar em especificar a identidade, ssh-copy-id irá 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 usar uma porta diferente da padrão ( 22 ), você deve usar aspas dessa maneira ( source ):

ssh-copy-id "user@hostname.example.com -p <port-number>"
    
por Marcel Stimberg 27.09.2010 / 23:01
fonte
109

Eu gosto da resposta de Marcel. Eu não sabia esse comando. Eu sempre usei o que encontrei em um site da SUN :

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

Eu pensei em postar aqui ainda, porque é uma boa ilustração do que pode ser alcançado em código do shell com o poder de ssh . Mas usar o ssh-copy-id é definitivamente uma maneira mais segura de fazer isso corretamente!

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

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
    
por Huygens 12.10.2010 / 00:26
fonte
23

Método gráfico

  1. Abra Aplicativos Senhas e chaves Minhas chaves pessoais .
  2. Selecione sua chave e clique em Remoto Configurar chave para Secure Shell .

    
por ændrük 27.09.2010 / 22:32
fonte
18

No Ubuntu, você pode buscar suas chaves no Launchpad:

ssh-import-id [launchpad account name]

Detalhes :

  1. Você precisa de uma conta do Launchpad para fazer login ou criar uma conta
  2. Após o login, clique no botão ao lado de chaves SSH:
  3. Cole o conteúdo do seu arquivo de chave pública nesse campo (incluindo comentários). Essa chave parece:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Aqui, ssh-rsa indica que a chave é uma chave RSA, AAAAB3Nza .... UyDOFDqJp é a chave real e lekensteyn é o comentário.

  4. Salve a chave pressionando Importar chave pública
  5. Se tudo correu bem, sua chave agora deve estar listada em chaves SSH:

O pacote ssh-import-id precisa ser instalado na máquina que precisa ser acessada do remoto. Este pacote é instalado junto com o pacote openssh-server , pois é um pacote recomendado para openssh-server . Depois de certificar-se de que ssh-import-id foi instalado Na máquina cliente, execute:

ssh-import-id [launchpad account name]

Isso fará o download da chave pública dos servidores do Launchpad via HTTPS, protegendo-o contra ataques MITM.

No Ubuntu Lucid e antes, você pode realizar o mesmo com:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

O comando echo é necessário para obter uma nova linha extra após a linha com a chave SSH.

por Lekensteyn 10.06.2011 / 21:20
fonte
12

para porta personalizada

ssh-copy-id -i "user@hostname.example.com -p2222"
O padrão

-i é padronizado para ~ / .ssh / id_rsa.pub, se você quiser outra chave, coloque o caminho da chave após -i

AVISO: Se você não escreveu o -i, copiará todas as chaves encontradas em ~ / .ssh

    
por Omar A. Shaban 08.03.2013 / 21:16
fonte

Tags