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 é:

  • 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:

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:

  • 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:

  • 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:

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

Abra-o com um editor de texto:

  • 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:

  • 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:

  • 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:

  • cd ~/.ssh

Olhe para as permissões dos arquivos:

  • 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:

  • 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:

  • 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:

  • 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:

  • 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:

  • 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:

  • 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.