Como configurar as chaves SSH no Ubuntu 16.04
introdução
SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor Ubuntu, é provável que passe a maior parte do seu tempo numa sessão de terminal ligada ao seu servidor através do SSH.
neste guia, vamos nos concentrar em configurar as chaves SSH para uma instalação de baunilha Ubuntu 16.04. As chaves SSH fornecem uma forma fácil e segura de entrar no seu servidor e são recomendadas para todos os utilizadores.
Passo 1 — Criar o Par de Chaves RSA
O primeiro passo é criar um par de chaves na máquina do cliente (normalmente o seu computador):
- ssh-keygen
Por omissão ssh-keygen
irá criar uma chave RSA 2048 bits par, o que é seguro o suficiente para a maioria dos casos de uso (você pode opcionalmente passar o -b 4096
sinalizador para criar uma maior chave de 4096 bits).
Depois de introduzir o comando, deverá ver o seguinte resultado:
OutputGenerating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):
Pressione ENTER
para salvar o par de chaves para o .ssh/
subdiretório em seu diretório home, ou especificar um caminho alternativo.
Se tivesse gerado previamente um par de chaves SSH, poderá ver a seguinte linha de comandos:
Output/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?
Se optar por sobrepor a chave no disco, não será mais capaz de autenticar usando a chave anterior. Tenha muito cuidado ao selecionar Sim, pois este é um processo destrutivo que não pode ser revertido.
deve então ver a seguinte mensagem:
OutputEnter passphrase (empty for no passphrase):
aqui poderá, opcionalmente, introduzir uma frase-senha segura, que é altamente recomendada. Uma frase-senha adiciona uma camada adicional de segurança para evitar que usuários não autorizados façam login. Para saber mais sobre segurança, consulte o nosso tutorial sobre como configurar a autenticação baseada em chaves SSH num servidor Linux.
deverá então ver o seguinte resultado:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+
tem agora uma chave pública e privada que pode usar para autenticar. O próximo passo é colocar a chave pública no seu servidor para que você possa usar a autenticação baseada na chave SSH para fazer login.
Passo 2-Copiar A chave pública para o servidor Ubuntu
a forma mais rápida de copiar a sua chave pública para o servidor Ubuntu é usar um utilitário chamado . Devido à sua simplicidade, este método é altamente recomendado se disponível. Se você não tiver disponível para você na máquina do seu cliente, você pode usar um dos dois métodos alternativos fornecidos nesta seção (copiar através de senha SSH, ou copiar manualmente a chave).
copiar chave pública usando ssh-copy-id
a ferramenta está incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível no seu sistema local. Para que este método funcione, você já deve ter acesso SSH baseado em senha ao seu servidor.
para usar o utilitário, basta indicar a máquina remota à qual gostaria de se ligar e a conta de utilizador à qual tem acesso com a senha SSH. Esta é a conta para a qual a sua chave pública de SSH será copiada.
a sintaxe é:
- ssh-copy-id username@remote_host
Você pode ver a seguinte mensagem:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Isto significa que o computador local não reconhece o host remoto. Isto vai acontecer a primeira vez que você se conectar a um novo host. Type ” yes “and press ENTER
to continue.
A seguir, o utilitário irá digitalizar a sua conta local para a chave id_rsa.pub
que criámos anteriormente. Quando encontrar a chave, pedir-lhe – á a senha da conta do utilizador remoto:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new [email protected]'s password:
tipo na senha (a sua dactilografia não será exibida para fins de segurança) e carregue em ENTER
. O utilitário irá se conectar à conta na máquina remota usando a senha que você forneceu. Ele então copiará o conteúdo de seu~/.ssh/id_rsa.pub
chave em um arquivo na casa da conta remota ~/.ssh
diretório chamado authorized_keys
.
Você deve ver o seguinte resultado:
OutputNumber of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.
neste ponto, a sua chave id_rsa.pub
foi enviada para a conta remota. Você pode continuar para o Passo 3.
copiar a chave pública usando SSH
Se você não tem disponível, mas você tem acesso SSH baseado em senha para uma conta no seu servidor, você pode carregar as suas chaves usando um método SSH convencional.
Podemos fazer isso usando o comando cat
para ler o conteúdo da chave pública de SSH no nosso computador local e através de uma ligação SSH ao servidor remoto.
no outro lado, podemos certificar-nos de que o diretório ~/.ssh
existe e tem as permissões corretas sob a conta que estamos usando.
Podemos então enviar o conteúdo que encaminhamos para um ficheiro chamado authorized_keys
dentro deste directório. Usaremos o símbolo >>
redirecionar para adicionar o conteúdo em vez de sobrepô-lo. Isto permitir-nos-á adicionar chaves sem destruir chaves previamente adicionadas.
O comando completo parece-se com isto:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
pode ver a seguinte mensagem:
isto significa que o seu computador local não reconhece a máquina remota. Isto vai acontecer a primeira vez que você se conectar a um novo host. Type ” yes “and press ENTER
to continue.
Depois, você deve ser solicitado a inserir o remota de senha de conta de usuário:
Output [email protected]'s password:
Depois de introduzir a sua palavra-passe, o conteúdo do seu id_rsa.pub
chave será copiado para o final de authorized_keys
arquivo da conta do usuário remoto. Continuar para o Passo 3 Se isso foi bem sucedido.
copiar a chave pública manualmente
Se não tiver acesso SSH baseado em senha ao seu servidor disponível, terá de completar o processo acima manualmente.
adicionaremos manualmente o conteúdo do seu ficheiro id_rsa.pub
ao ficheiro~/.ssh/authorized_keys
na sua máquina remota.
para mostrar o conteúdo do seuid_rsa.pub
chave, escreva isto no seu computador local:
- cat ~/.ssh/id_rsa.pub
verá o conteúdo da chave, que deverá ser algo parecido com isto:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
acesse a sua máquina remota usando o método que estiver disponível.
Uma vez que tenha acesso à sua conta no servidor remoto, deve certificar-se de que existe a pasta ~/.ssh
. Este comando irá criar a pasta, se necessário, ou não fará nada se já existir:
- mkdir -p ~/.ssh
Agora, poderá criar ou modificar o ficheiro authorized_keys
nesta pasta. Você pode adicionar o conteúdo do seu id_rsa.pub
arquivo para o final de authorized_keys
arquivo, criando-o, se necessário, usando este comando:
- echo public_key_string >> ~/.ssh/authorized_keys
o comando acima, substituir o public_key_string
com a saída do cat ~/.ssh/id_rsa.pub
comando que você executou no seu sistema local. Deve começar com ssh-rsa AAAA...
.finalmente, vamos garantir que o ficheiro ~/.ssh
directório e authorized_keys
tenha o conjunto de permissões apropriado:
- chmod -R go= ~/.ssh
esta recursivamente remove todas as permissões de” grupo “e” outras”para o diretório ~/.ssh/
.
Se você estiver usando o root
conta para configurar as teclas para uma conta de usuário, é importante também que o ~/.ssh
diretório pertence ao usuário, e não para root
:
- chown -R sammy:sammy ~/.ssh
neste tutorial o nosso usuário é chamado sammy, mas você deve substituir o nome de usuário apropriado para o comando acima.
Agora podemos tentar a autenticação sem senhas com o nosso servidor Ubuntu.
Passo 3-autenticar-se no servidor Ubuntu usando as chaves SSH
Se tiver concluído com sucesso um dos procedimentos acima, deverá ser capaz de aceder à máquina remota sem a senha da conta remota.
O processo básico é o mesmo:
- ssh username@remote_host
Se esta for a sua primeira ligação a esta máquina (se usou o último método acima), poderá ver algo como isto:
isto significa que o seu computador local não reconhece a máquina remota. Type ” yes “and then press ENTER
to continue.
Se não forneceu uma frase-senha para a sua chave privada, será ligado imediatamente. Se forneceu uma frase-senha para a chave privada quando criou a chave, ser-lhe-á pedido para a introduzir agora (lembre-se que as suas teclas não irão aparecer na sessão do terminal para segurança). Após a autenticação, deverá abrir uma nova sessão de consola para si com a conta configurada no servidor Ubuntu.
Se a autenticação baseada em Chaves foi bem sucedida, continue a aprender como proteger ainda mais o seu sistema, desactivando a autenticação por senha.
Passo 4-desactivar a autenticação da senha no seu servidor
Se foi capaz de entrar na sua conta usando o SSH sem uma senha, configurou com sucesso a autenticação baseada na chave de SSH na sua conta. No entanto, o seu mecanismo de autenticação baseado em senha ainda está activo, o que significa que o seu servidor ainda está exposto a ataques de Força bruta.
Antes de completar os passos nesta secção, certifique-se que tem a autenticação baseada na chave SSH configurada para a conta root neste servidor, ou, de preferência, que tem a autenticação baseada na chave SSH configurada para uma conta não-root neste servidor com privilégios de sudo
. Este passo irá bloquear logins baseados em senha, de modo que garantir que você ainda será capaz de obter acesso administrativo é crucial.
logo que tenha confirmado que a sua conta remota tem privilégios administrativos, faça login no seu servidor remoto com chaves SSH, quer como root quer com uma conta com sudo
privilégios. Em seguida, abra o arquivo de configuração do SSH daemon:
- sudo nano /etc/ssh/sshd_config
dentro do arquivo, Procure por uma diretiva chamada . Isto pode ser comentado. Descomentar a linha e definir o valor para “não”. Isto irá desactivar a sua capacidade de se ligar através do SSH usando senhas de conta:
...PasswordAuthentication no...
Salve e feche o arquivo quando você terminar pressionando CTRL
X
, então Y
para confirmar salvar o arquivo, e, finalmente, ENTER
para sair do nano. Realmente implementar essas alterações, é necessário reiniciar o sshd
serviço:
- sudo systemctl restart ssh
Como precaução, abra uma nova janela de terminal e o teste que o serviço SSH está funcionando corretamente antes de encerrar esta sessão:
- ssh username@remote_host
Uma vez verificado o seu serviço de SSH, poderá fechar com segurança todas as sessões actuais do servidor.
o servidor SSH no seu servidor Ubuntu agora só responde às teclas SSH. A autenticação baseada em senha foi desactivada com sucesso.
conclusão
deverá agora ter a autenticação baseada na chave SSH configurada no seu servidor, permitindo-lhe assinar SEM fornecer uma senha da conta.se gostaria de saber mais sobre o trabalho com o SSH, veja o nosso guia do SSH Essentials.