Questão Maneira mais fácil de copiar chaves ssh para outra máquina?


Eu sou preguiçoso em casa e uso 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 para copiar uma chave, espero que haja um wrapper de conveniência em algum lugar no pacote ssh do Ubuntu?

Eu já estou ciente como desligar logins de senha.


296
2017-09-27 20:24


origem


askubuntu.com/questions/307881/… - Vineet


Respostas:


o ssh-copy-id comando (no openssh-client pacote 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". Consiste em dois arquivos (chave pública e privada) no seu ~/.ssh diretório, normalmente nomeado 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 (fonte):

ssh-copy-id "user@hostname.example.com -p <port-number>"

408
2017-09-27 21:01



Qual é a identidade padrão? - Oxwivi
@Oxwivi: A identidade padrão é sua chave ssh "padrão". Consiste em dois arquivos (chave pública e privada) no seu ~/.ssh diretório, normalmente chamado de `` 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 o arquivo, ssh-copy-id só vai escolher automaticamente. - Marcel Stimberg
para porto diferente use este: ssh-copy-id "user@host -p 6842" - jibon57
E se o servidor remoto que você está copiando não permitir prompts de senha e estiver basicamente bloqueado, exceto pelo acesso SSH? - Cyle
No mac você pode fazer brew install ssh-copy-id e, em seguida, execute o comando. - Avishai


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

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 shell com o poder de ssh. Mas usando o ssh-copy-id é definitivamente uma maneira mais segura de fazê-lo corretamente!

Note que se a pasta .ssh ainda não existe, 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"'

113
2017-10-11 22:26



Estes comandos exatos também funcionam a partir de um Mac - Mihai P.
Deve funcionar em qualquer Unix com mais shell. Eu atualizo o post com um comando atualizado no caso da pasta .ssh não existe no lado remoto. - Huygens
o cat não é necessário - um redirecionamento de entrada normal é suficiente, por ex. < ~/.ssh/id_rsa.pub | ssh ... - maxschlepzig
@Huygens Obrigado. Mais útil para lembrar este, porque você não precisa instalar nada e também pode ser bom para executar comandos estrangeiros, por exemplo. alterando as permissões do lado do servidor conforme demonstrado em seu exemplo avançado. - Jonathan Komar
Eu prefiro muito mais desta forma, uma vez que permite que você use ssh detalhado, que é útil para descobrir por que as coisas estão quebradas. sshcopyid apenas congelou e nunca funcionou, isso foi perfeitamente. - Sirens


Método gráfico

  1. Aberto Aplicações ▸ Senhas e chaves ▸ Minhas chaves pessoais.
  2. Selecione sua chave e clique em Controlo remoto ▸ Configurar chave para o shell seguro.

Set Up Computer for SSH Connection


25
2017-09-27 20:32



Eu não tenho "senhas e chaves de criptografia" no meu menu. - Jorge Castro
Qual versão do Ubuntu você está usando? No Ubuntu 10.04 LTS, isso deve estar disponível por padrão. - ændrük
10.10, acabou de adicionar a tag. A resposta de Marcel é o que eu estou procurando, embora o +1 para sua resposta orientada a desktop! - Jorge Castro
Este programa é seahorse. - Gilles
Eu acho que este aplicativo está no menu System-> Preferences no 10.10 (não posso verificá-lo agora, estou no 10.04) - Huygens


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

ssh-import-id [launchpad account name]

Detalhes:

  1. Você precisa de uma conta no Launchpad Entre ou crie 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 tecla 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 a partir do controle remoto. Este pacote é instalado junto com o openssh-serverpacote como é um pacote recomendado para openssh-server. Depois de se certificar de que ssh-import-id foi instalado Na máquina do cliente, execute:

ssh-import-id [launchpad account name]

Isso fará o download da chave pública dos servidores do Launchpad via HTTPS, o que protege contra ataques do 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 echo O comando é necessário para obter uma nova linha extra após a linha com a chave SSH.


18
2018-06-10 19:20





para porta personalizada

ssh-copy-id -i "user@hostname.example.com -p2222"

-i muda o padrão para ~ / .ssh / id_rsa.pub, se você quiser outra chave, coloque o caminho da chave depois de -i

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


12
2018-03-08 20:16



Você tem certeza sobre isso? "-i identity_file - Use somente as chaves contidas no identity_file (ao invés de procurar por identidades via ssh-add (1) ou no default_ID_file). Se o nome do arquivo não terminar em .pub, isto será adicionado. Se o nome do arquivo é omitido, o default_ID_file é usado. " - Yousha Aleayoub