Sou preguiçoso em casa e uso a autenticação de senha nas minhas máquinas domésticas. Estou pronto para mudar para a autenticação baseada em chave. Existem muitas opções na Web sobre como fazer isso, incluindo a criação de gatos e, em seguida, atirar a chave, escanear a chave diretamente etc.
Estou procurando a maneira mais fácil e recomendada de copiar uma chave, espero que exista um wrapper de conveniência em algum lugar do pacote ssh do Ubuntu?
Eu já estou ciente de como desligar os logins de senha .
Respostas:
O
ssh-copy-id
comando (no pacote openssh-client e instalado por padrão) faz exatamente isso:copia a chave pública da sua identidade padrão (use
-i identity_file
para outras identidades) no host remoto.A identidade padrão é sua chave ssh "padrão". Ele consiste em dois arquivos (chaves públicas e privadas) em seu
~/.ssh
diretório, normalmente chamadoidentity
,id_rsa
,id_dsa
,id_ecdsa
ouid_ed25519
(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, o ssh-copy-id irá selecioná-la automaticamente.No caso de você não ter uma identidade, você pode gerar um com a ferramenta
ssh-keygen
.Além disso, se o servidor usar uma porta diferente da porta padrão (
22
), você deve usar aspas desta maneira ( origem ):fonte
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
e executar o comando.Eu gosto da resposta de Marcel. Eu não conhecia esse comando. Eu sempre uso o que encontrei no site da Oracle :
Eu pensei em publicá-lo aqui ainda, porque é uma boa ilustração do que pode ser alcançado em código shell com o poder de
ssh
. Mas usar ossh-copy-id
é definitivamente uma maneira mais segura de fazê-lo 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 leitura e gravação apenas para o proprietário). Aqui está um comando mais avançado:fonte
.ssh
não exista no lado remoto.cat
não é necessário - um redirecionamento de entrada normal é suficiente, por exemplo,< ~/.ssh/id_rsa.pub | ssh ...
Método gráfico
fonte
seahorse
.No Ubuntu, você pode buscar suas chaves no Launchpad:
Detalhes :
Cole o conteúdo do seu arquivo de chave pública nesse campo (incluindo o comentário). Essa chave se parece com:
Aqui,
ssh-rsa
indica que a chave é uma chave RSA,AAAAB3Nza .... UyDOFDqJp
é a chave real elekensteyn
é o comentário.O pacote
ssh-import-id
precisa ser instalado na máquina que precisa ser acessada remotamente. Este pacote é instalado junto com oopenssh-server
pacote, pois é um pacote recomendado paraopenssh-server
. Depois de verificarssh-import-id
se foi instalado Na máquina cliente, execute:Isso fará o download da chave pública dos servidores Launchpad por HTTPS, que protege você contra ataques do MITM.
No Ubuntu Lucid e antes, você pode fazer o mesmo com:
O
echo
comando é necessário para obter uma nova linha extra após a linha com a chave SSH.fonte
para porta personalizada
O padrão -i alterna 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, ele copiará todas as suas chaves encontradas em ~ / .ssh
fonte
ssh-copy-id
faz exatamente isso. Não sei por que algumas das outras respostas aqui adicionam informações imprecisas. A ajuda mostra o seguinte:Eu apenas tentei o seguinte no cliente Ubuntu 18.04 com um servidor CentOS 7.6 e funcionou como um encanto. O exemplo mostra usando uma porta customizada de
2222
e especificando uma chave pública em~/.ssh/path-to-rsa.pub
Antes de executar o comando, na verdade, usei o
-n
comutador no final para executar uma execução a seco que confirmou que o comando funcionaria conforme o planejado. Depois de confirmar, executei o comando novamente como acima, sem a-n
chave.fonte