O SSH é um protocolo da camada de aplicação amplamente utilizado para acesso remoto. Neste artigo, vamos explorar como usar o protocolo SSH para se conectar a servidores Linux remotos e configurar parâmetros específicos para aumentar a segurança.
O SSH pode ser utilizado em qualquer distribuição Linux, pois vem habilitado por padrão na maioria das distribuições Unix e Linux modernas.
Neste guia, todos os testes foram realizados no Ubuntu 22.04; no entanto, as instruções também podem ser aplicadas a outras distribuições, como Debian, CentOS, entre outras.
Você pode usar diversos programas clientes para se conectar a servidores Linux via SSH. Alguns dos mais populares são:
Windows: PuTTY, Bitvise SSH Client, SuperPuTTY, mRemoteNG, MobaXterm
macOS: Termius ou o utilitário SSH integrado ao Terminal
Windows (Windows 10, Windows 11, Windows Server 2019): o cliente OpenSSH integrado, acessível via linha de comando (cmd) ou PowerShell
A sintaxe padrão do comando SSH é a seguinte:
ssh <usuario@IP_ou_dominio>
Por exemplo:
ssh alex@166.1.227.189
Por padrão, o SSH se conecta pela porta 22. Se o servidor utilizar uma porta diferente, especifique-a usando a opção -p:
ssh alex@166.1.227.189 -p 2222
O arquivo de configuração do servidor SSH chama-se sshd_config e está localizado no diretório /etc/ssh. Não o confunda com o arquivo do cliente SSH, chamado ssh_config. Neste artigo, focaremos exclusivamente no arquivo do servidor.
Por padrão, as conexões SSH utilizam autenticação por senha, a menos que uma chave SSH tenha sido adicionada durante a criação do servidor (as chaves SSH serão abordadas na próxima seção). Na maioria das distribuições Linux/Unix, a configuração do servidor inclui autenticação PAM, permitindo que usuários com contas no sistema façam login usando nome de usuário e senha.
Para acessar usando senha, você precisa do endereço do servidor remoto e das credenciais do usuário, por exemplo:
ssh alex@166.1.227.189
Após executar o comando, será solicitada a senha. Se estiver correta, você terá acesso ao servidor.
Ao se conectar pela primeira vez, aparecerá uma mensagem sobre a “impressão digital” (fingerprint) do servidor. Digite yes para continuar.
Embora a autenticação por senha funcione, ela não é o método mais seguro, pois senhas podem ser descobertas. Uma alternativa mais segura é o uso de chaves SSH, descrito na próxima seção.
As chaves SSH são um método de autenticação mais seguro e amplamente utilizado do que senhas. O SSH utiliza dois tipos de chaves:
Chave pública: usada para criptografia e pode ser compartilhada publicamente
Chave privada: usada para descriptografia e deve ser mantida em segredo
Para gerar chaves SSH, utilize o comando:
ssh-keygen
O comando solicitará que você escolha um diretório para salvar as chaves. Por padrão, elas são armazenadas no diretório .ssh da sua pasta pessoal, por exemplo /home/alex/.ssh. Pressione Enter para usar o caminho padrão.
Em seguida, será solicitado que você crie uma frase secreta (passphrase) para aumentar a segurança. Se preferir não usar uma passphrase, pressione Enter quando solicitado.
Após a geração, a chave privada (id_rsa) e a chave pública (id_rsa.pub) serão armazenadas no diretório .ssh.
Antes de se conectar ao host remoto, copie a chave pública para esse host usando o comando ssh-copy-id:
ssh-copy-id -i /home/alex/.ssh/id_rsa.pub alex@166.1.227.189
Será solicitada a senha do usuário remoto apenas uma vez. Depois disso, a chave pública será adicionada ao host remoto, permitindo o login sem senha:
ssh alex@166.1.227.189
Se nenhuma senha for solicitada, a autenticação por chave está funcionando corretamente.
Como senhas não são seguras, recomenda-se desativar a autenticação por senha e utilizar apenas acesso baseado em chaves. Para isso, edite o arquivo de configuração do servidor SSH:
nano /etc/ssh/sshd_config
Localize a linha PasswordAuthentication e altere seu valor para no:
PasswordAuthentication no
Salve as alterações e reinicie o servidor SSH:
systemctl restart ssh
Importante: antes de desativar a autenticação por senha, certifique-se de que a autenticação por chave está funcionando corretamente. Caso contrário, você pode perder o acesso ao servidor. Se isso acontecer, será possível restaurar a autenticação por senha através do console web do servidor.
Por padrão, o servidor SSH utiliza a porta 22. Você pode alterá-la editando o arquivo sshd_config. Localize a linha Port, remova o símbolo # e defina uma nova porta (entre 1024 e 65535):
Port 2224
Salve as alterações e reinicie o servidor SSH:
systemctl restart ssh
Para se conectar ao servidor usando a nova porta, utilize a opção -p:
ssh alex@166.1.227.189 -p 2224
Em algumas distribuições, o login do usuário root é permitido por padrão. Como o usuário root possui privilégios totais no sistema, é mais seguro desativar esse acesso. Localize a linha PermitRootLogin no arquivo sshd_config e defina como no:
PermitRootLogin no
Salve o arquivo e reinicie o servidor SSH:
systemctl restart ssh
Você pode restringir o acesso SSH a usuários específicos editando o arquivo sshd_config com os seguintes parâmetros:
AllowUsers: especifica quais usuários têm permissão para se conectar via SSH. Exemplo:
AllowUsers test admin
DenyUsers: especifica quais usuários têm acesso SSH negado. Exemplo:
DenyUsers nginx websrv
Para aplicar as alterações, reinicie o servidor SSH:
systemctl restart ssh
O SSH é uma ferramenta indispensável para a conexão com servidores remotos. Além da criptografia integrada, é possível aumentar ainda mais a segurança do servidor SSH por meio de uma configuração adequada, como desativar a autenticação por senha e restringir o acesso a usuários específicos.