Tutorial

Como usar o SSH para se conectar a um servidor remoto

Published on December 1, 2020
Português
Como usar o SSH para se conectar a um servidor remoto

Introdução

Uma ferramenta essencial para se ter domínio na administração de sistemas é o SSH.

O SSH, ou Secure Shell, é um protocolo usado para fazer login em sistemas remotos de forma segura. É a maneira mais comum de acessar servidores Linux remotos.

Neste guia, vamos discutir como usar o SSH para se conectar a um sistema remoto.

Sintaxe básica

Para se conectar a um sistema remoto usando o SSH, vamos usar o comando ssh. A forma mais básica do comando é:

  1. ssh remote_host

O remote_host neste exemplo é o endereço IP ou o nome de domínio ao qual você está tentando se conectar.

Este comando assume que o nome de usuário no sistema remoto é o mesmo que o seu nome de usuário em seu sistema local.

Se o nome de usuário for diferente no sistema remoto, especifique isso usando esta sintaxe:

  1. ssh remote_username@remote_host

Depois de se conectar ao servidor, será solicitado que verifique sua identidade fornecendo uma senha. Mais tarde, vamos mostrar como gerar chaves para usar em vez de senhas.

Para sair da sessão ssh e retornar em sua sessão de shell local, digite:

  1. exit

Como o SSH funciona?

O SSH funciona conectando um programa cliente a um servidor ssh, chamado sshd.

Na seção anterior, o ssh era o programa cliente. O servidor ssh já está sendo executado no remote_host que especificamos.

Em seu servidor, o servidor sshd já deve estar sendo executado. Se este não for o caso, será necessário acessar seu servidor através de um console baseado na Web ou console serial local.

O processo necessário para iniciar um servidor ssh depende da distribuição Linux que você está usando.

No Ubuntu, inicie o servidor ssh digitando:

  1. sudo systemctl start ssh

Isso deve iniciar o servidor sshd e então você pode fazer login remotamente.

Como configurar o SSH

Quando você altera a configuração do SSH, está alterando as configurações do servidor sshd.

No Ubuntu, o arquivo de configuração sshd principal está localizado em /etc/ssh/sshd_config.

Faça o backup da versão atual deste arquivo antes de editar:

  1. sudo cp /etc/ssh/sshd_config{,.bak}

Abra-o com um editor de texto:

  1. sudo nano /etc/ssh/sshd_config

Você vai querer deixar a maioria das opções neste arquivo sozinha. No entanto, existem algumas que você pode querer dar uma olhada:

/etc/ssh/sshd_config
Port 22

A declaração port especifica em qual porta o servidor sshd irá ouvir conexões. Por padrão, ela é a 22. Você provavelmente deve deixar essa configuração intacta, a menos que tenha motivos específicos para fazer o contrário. Se você alterar sua porta, vamos mostrar a você como se conectar à nova porta posteriormente.

/etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

As declarações HostKey especificam onde procurar por chaves host globais. Vamos discutir o que é uma chave host mais tarde.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

Esses dois itens indicam o nível de geração de registros que deve ocorrer.

Se você estiver tendo dificuldades com o SSH, aumentar a quantidade de registros pode ser uma boa maneira de descobrir qual é o problema.

/etc/ssh/sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Esses parâmetros especificam algumas das informações de login.

LoginGraceTime especifica por quantos segundos será mantida a conexão sem fazer o login com sucesso.

Pode ser uma boa ideia definir esse tempo apenas um pouco mais alto do que a quantidade de tempo que você leva para fazer login normalmente.

PermitRootLogin seleciona se o usuário root está autorizado a fazer login.

Na maioria dos casos, isso deve ser alterado para no quando você criou uma conta de usuário que tem acesso a privilégios elevados (através de su ou sudo) e pode fazer login via ssh.

strictModes é uma proteção de segurança que recusará uma tentativa de login se os arquivos de autenticação puderem ser lidos por todos.

Isso impede tentativas de login quando os arquivos de configuração não estão seguros.

/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10

Esses parâmetros configuram uma habilidade chamada X11 Forwarding. Isso permite que você visualize a interface gráfica de usuário (GUI) de um sistema remoto, no sistema local.

Essa opção deve estar habilitada no servidor e enviada com o cliente SSH durante a conexão com a opção -X.

Depois de fazer as alterações, salve e feche o arquivo digitando CTRL+X e Y, seguido por ENTER.

Se você alterou quaisquer configurações em /etc/ssh/sshd_config, certifique-se de recarregar o servidor sshd para implementar suas modificações:

  1. sudo systemctl reload ssh

Você deve testar suas alterações minuciosamente para garantir que elas operem da forma que você espera.

Pode ser uma boa ideia ter algumas sessões ativas quando você estiver fazendo alterações. Isso permitirá que você reverta a configuração se necessário.

Como fazer login via SSH com chaves

Embora seja útil fazer login em um sistema remoto usando senhas, é uma ideia muito melhor configurar a autenticação baseada em chaves.

Como a autenticação baseada em chaves funciona?

A autenticação baseada em chaves funciona criando um par de chaves: uma chave privada e uma chave pública.

A chave privada está localizada na máquina cliente e é protegida e mantida em segredo.

A chave pública pode ser fornecida a qualquer um ou colocada em qualquer servidor que você queira acessar.

Quando você tentar se conectar usando um par de chaves, o servidor usará a chave pública para criar uma mensagem para o computador cliente que só pode ser lida com a chave privada.

O computador cliente então envia a resposta adequada de volta ao servidor e o servidor saberá que o cliente é legítimo.

Todo esse processo é feito automaticamente depois de você configurar as chaves.

Como criar chaves SSH

As chaves SSH devem ser geradas no computador a partir do qual você deseja fazer login. Esta é geralmente a sua máquina local.

Digite o seguinte na linha de comando:

  1. ssh-keygen -t rsa

Pressione enter para aceitar os padrões. Suas chaves serão criadas em ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.

Mude para o diretório .ssh digitando:

  1. cd ~/.ssh

Olhe para as permissões dos arquivos:

  1. ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

Como você pode ver, o arquivo id_rsa é legível e gravável apenas pelo proprietário. É assim que deve ser para mantê-lo em segredo.

O arquivo id_rsa.pub, no entanto, pode ser compartilhado e possui permissões adequadas para essa atividade.

Como transferir sua chave pública para o servidor

Se você tiver atualmente acesso baseado em senha a um servidor, você pode copiar sua chave pública para ele executando este comando:

  1. ssh-copy-id remote_host

Isso irá iniciar uma sessão SSH. Depois de inserir sua senha, ele irá copiar sua chave pública para o arquivo de chaves autorizadas do servidor, o que permitirá que você faça login sem a senha da próxima vez.

Opções do lado do cliente

Existem vários sinalizadores opcionais que você pode selecionar ao se conectar por meio de SSH.

Alguns deles podem ser necessários para corresponder às definições na configuração sshd do host remoto.

Por exemplo, se você alterou o número de porta em sua configuração sshd, você precisará fazer a correspondência dessa porta do lado do cliente digitando:

  1. ssh -p port_number remote_host

Se você deseja apenas executar um único comando em um sistema remoto, especifique-o após o host dessa forma:

  1. ssh remote_host command_to_run

Você irá se conectar à máquina remota, autenticar, e o comando será executado.

Como dissemos antes, se o encaminhamento X11 estiver habilitado em ambos os computadores, acesse essa funcionalidade digitando:

  1. ssh -X remote_host

Desde que você tenha as ferramentas apropriadas em seu computador, programas gráficos que você usa no sistema remoto irão agora abrir suas janelas em seu sistema local.

Desativando a autenticação de senha

Se você criou chaves SSH, melhore a segurança do seu servidor desativando a autenticação somente de senhas. Além do console, a única maneira de fazer login no servidor será através da chave privada que emparelha com a chave pública que você instalou no servidor.

Aviso: antes de prosseguir com este passo, certifique-se de que você instalou uma chave pública no servidor. Caso contrário, você estará sob bloqueio!

Como root ou usuário com privilégios sudo, abra o arquivo de configuração sshd:

  1. sudo nano /etc/ssh/sshd_config

Localize a linha em que se lê Password Authentication, e descomente-a removendo o # do início. Em seguida, altere seu valor para no:

/etc/ssh/sshd_config
PasswordAuthentication no

Duas outras configurações que não devem precisar ser modificadas (desde que você não tenha modificado este arquivo antes) são PubkeyAuthentication e ChallengeResponseAuthentication. Elas são definidas por padrão, e devem estar da seguinte forma:

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Depois de fazer as alterações, salve e feche o arquivo.

Agora, é possível recarregar o daemon SSH:

  1. sudo systemctl reload ssh

A autenticação de senha agora deve estar desativada e o servidor deve estar acessível apenas através da autenticação de chaves SSH.

Conclusão

Aprender como usar o SSH é uma atividade que vale a pena, mesmo porque é uma atividade muito comum.

Ao usar as várias opções, você descobrirá funcionalidades mais avançadas que podem tornar sua vida mais fácil. O SSH permaneceu popular porque é seguro, leve e útil em diversas situações.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel