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.
O comando ssh-copy-id
(no pacote **openssh-client*** e instalado por padrão) faz exatamente isso:
ssh-copy-id [email protected]
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 "[email protected] -p <port-number>"
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 <user>@<hostname> '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 <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'