Como Usar SSH para Conectar a um Servidor Remoto

Introdução

Uma ferramenta essencial a dominar como administrador de sistema é o SSH.

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

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

Implante suas aplicações frontend do GitHub usando a Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean focar em dimensionar sua aplicação.

Sintaxe Principal

Para se conectar a um sistema remoto usando SSH, usaremos o comando ssh.

Se estiver usando o Windows, você precisará instalar uma versão do OpenSSH para poder ssh a partir de um terminal. Se preferir trabalhar no PowerShell, você pode seguir a documentação da Microsoft para adicionar o OpenSSH ao PowerShell. Se preferir ter um ambiente Linux completo disponível, você pode configurar o WSL, o Subsistema Windows para Linux, que incluirá ssh por padrão. Por fim, como terceira opção mais leve, você pode instalar o Git for Windows, que fornece um ambiente de terminal bash nativo do Windows que inclui o comando ssh. Todos esses são bem suportados e a escolha dependerá da sua preferência.

Se estiver usando um Mac ou Linux, você já terá o comando ssh disponível no seu terminal.

A forma mais direta do comando é:

  1. ssh remote_host

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

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

Se seu nome de usuário for diferente no sistema remoto, você pode especificá-lo usando esta sintaxe:

  1. ssh remote_username@remote_host

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

Para sair da sessão ssh e retornar à 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, ssh era o programa cliente. O servidor ssh já estava em execução no remote_host que especificamos.

Em quase todos os ambientes Linux, o servidor sshd deve iniciar automaticamente. Se não estiver em execução por algum motivo, talvez seja necessário acessar temporariamente seu servidor por meio 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, você pode iniciar o servidor ssh digitando:

  1. sudo systemctl start ssh

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

Como configurar o SSH

Ao alterar a configuração do SSH, você está mudando as configurações do servidor sshd.

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

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

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

Abra-o usando nano ou seu editor de texto favorito:

  1. sudo nano /etc/ssh/sshd_config

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

/etc/ssh/sshd_config
Port 22

A declaração de porta especifica em qual porta o servidor sshd vai ouvir conexões. Por padrão, isso é 22. Você provavelmente deve deixar essa configuração como está, a menos que tenha motivos específicos para fazer o contrário. Se você alterar a porta, mostraremos 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 de chaves de host especificam onde procurar as chaves de host globais. Vamos discutir o que é uma chave de host mais tarde.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

Esses dois itens indicam o nível de registro que deve ocorrer.

Se estiver enfrentando dificuldades com o SSH, aumentar a quantidade de registro 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 quantos segundos manter a conexão ativa sem efetuar login com sucesso.

Pode ser uma boa ideia definir este tempo um pouco maior que o tempo que você leva para fazer login normalmente.

PermitRootLogin seleciona se o usuário root tem permissão para fazer login.

Na maioria dos casos, isso deve ser alterado para não quando você tiver criado uma conta de usuário que tem acesso a privilégios elevados (por meio de su ou sudo) e pode fazer login via SSH, para minimizar o risco de alguém obter acesso root ao seu servidor.

strictModes é uma proteção de segurança que recusará uma tentativa de login se os arquivos de autenticação forem legíveis por todos.

Isso evita 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 Encaminhamento X11. Isso permite visualizar a interface gráfica do usuário (GUI) de um sistema remoto no sistema local.

Essa opção deve ser ativada no servidor e fornecida com o cliente SSH durante a conexão com a opção -X.

Depois de fazer suas alterações, salve e feche o arquivo. Se estiver usando o nano, pressione Ctrl+X, depois, quando solicitado, Y e depois Enter.

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

  1. sudo systemctl reload ssh

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

Pode ser uma boa ideia ter algumas sessões de terminal abertas enquanto você faz alterações. Isso permitirá reverter a configuração, se necessário, sem se bloquear.

Como Fazer Login no SSH com Chaves

Embora seja útil poder fazer login em um sistema remoto usando senhas, é mais rápido e seguro configurar autenticação baseada em chaves.

Como Funciona a Autenticação Baseada em Chave?

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

A chave privada é localizada no computador cliente e é protegida e mantida em segredo.

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

Quando você tenta 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 apropriada de volta ao servidor e o servidor saberá que o cliente é legítimo.

Esse processo é realizado automaticamente após você configurar suas chaves.

Como Criar Chaves SSH

As chaves SSH devem ser geradas no computador de onde você deseja fazer login a partir de. Isso geralmente é feito em sua máquina local.

Insira o seguinte na linha de comando:

  1. ssh-keygen -t rsa

Você pode ser solicitado a definir uma senha nos arquivos de chave, mas esta é uma prática bastante incomum, e você deve pressionar Enter nas solicitações para aceitar as configurações padrão. Suas chaves serão criadas em ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.

Mude para o diretório .ssh digitando:

  1. cd ~/.ssh

Verifique 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. Isso ajuda a mantê-lo em segredo.

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

Como Transferir Sua Chave Pública para o Servidor

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

  1. ssh-copy-id remote_host

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

Opções do Lado do Cliente

Há uma série de flags opcionais que você pode fornecer ao se conectar via SSH.

Algumas dessas podem ser necessárias para corresponder às configurações no arquivo de configuração do sshd do host remoto.

Por exemplo, se você alterou o número da porta na sua configuração do sshd, você precisará corresponder a essa porta no lado do cliente digitando:

  1. ssh -p port_number remote_host

Observação: Alterar a porta ssh é uma maneira razoável de fornecer segurança através da obscuridade. Se você estiver permitindo conexões ssh para um servidor amplamente conhecido na porta 22 como normal, e tiver a autenticação por senha habilitada, provavelmente será alvo de muitas tentativas de login automatizadas. Usar exclusivamente autenticação baseada em chaves e executar ssh em uma porta não padrão não é a solução de segurança mais complexa que você pode empregar, mas deve reduzir isso a um mínimo.

Se você deseja executar apenas um comando em um sistema remoto, pode especificá-lo após o host, da seguinte maneira:

  1. ssh remote_host command_to_run

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

Como mencionado anteriormente, se o encaminhamento X11 estiver habilitado em ambos os computadores, você pode acessar essa funcionalidade digitando:

  1. ssh -X remote_host

Desde que você tenha as ferramentas apropriadas no seu computador, os programas de GUI que você usa no sistema remoto agora abrirão sua janela no seu sistema local.

Desabilitando a Autenticação por Senha

Se você criou chaves SSH, você pode melhorar a segurança do seu servidor desabilitando a autenticação apenas por senha. Além do console, a única maneira de fazer login no seu servidor será através da chave privada que corresponde à chave pública que você instalou no servidor.

Aviso: Antes de prosseguir com este passo, certifique-se de ter instalado uma chave pública no seu servidor. Caso contrário, você será bloqueado!

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

  1. sudo nano /etc/ssh/sshd_config

Localize a linha que contém Password Authentication, e descomente-a removendo o # inicial. Você então pode mudar seu valor para no:

/etc/ssh/sshd_config
PasswordAuthentication no

Mais duas 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 estão definidas por padrão e devem ser como segue:

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

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

Agora você pode recarregar o daemon SSH:

  1. sudo systemctl reload ssh

A autenticação por senha deve estar desabilitada e seu servidor deve ser acessível apenas através da autenticação por chave SSH.

Conclusão

Aprender a usar o SSH beneficiará muito qualquer um dos seus futuros empreendimentos de computação em nuvem. Ao utilizar as várias opções, você descobrirá funcionalidades mais avançadas que podem facilitar sua vida. O SSH permanece popular porque é seguro, leve e útil em diversas situações.

Em seguida, você pode querer aprender sobre como trabalhar com SFTP para realizar transferências de arquivos na linha de comando.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server