Domine os Comandos SSH no Linux para Administradores do Windows

Linux e Windows costumavam ser inimigos mortais, mas hoje em dia eles tendem a se dar muito melhor. Na verdade, agora você pode até usar SSH nativamente no Windows: tanto como cliente quanto como servidor. O que você faz quando é um administrador do Windows, mas precisa gerenciar também máquinas Linux? Você se acostuma com o comando (Secure Shell) SSH no Linux!

Esta é a Parte IV da série de postagens no blog “A Windows Guy in a Linux World”. Se você quiser aprender mais sobre conceitos populares do Linux, não deixe de conferir Parte I, Parte II e Parte III.

Neste post, você vai aprender tudo sobre como habilitar SSH no Linux e como configurar seu cliente SSH do Windows para se conectar a servidores Linux remotos.

Observação: Todos os exemplos serão usando OpenSUSE Linux.

Afastando-se do ambiente de desktop

No primeiro post desta série, o tutorial recomendou o uso do ambiente de desktop KDE. Conforme você passava pela instalação do OpenSUSE, provavelmente viu outra opção tentadora: a edição de servidor do OpenSUSE.

Server Edition of OpenSUSE

Se você instalou a edição do servidor da maioria das distribuições Linux (incluindo o OpenSUSE), pode ter percebido a completa falta de um ambiente de trabalho. A edição do Servidor da maioria das distribuições populares (como o OpenSUSE, assim como o Ubuntu Server e o CentOS) é como o Windows Server Core: sem ambiente de trabalho para falar.

Para entender por que o ambiente de trabalho é geralmente evitado na cultura Linux, é necessário entender o CLI e o SSH.

SSH: O Padrão Ouro da Gerência Remota

O SSH, como muitos outros protocolos de gerenciamento remoto, é um sistema baseado em cliente-servidor. Um cliente se conecta remotamente à rede de um servidor e permite que você execute comandos (ou até mesmo transfira arquivos). O SSH é o padrão de facto quando se trata de gerenciar o Linux remotamente.

Já que o SSH existe há muito tempo e está profundamente inserido no ecossistema Linux, utilitários de administração de linha de comando dominam o ambiente de servidores Linux. A maioria das distribuições de servidores Linux não possui uma interface gráfica.

Usando Comandos SSH no Linux

Chega de conversa. Vamos ver o que o SSH pode fazer, primeiro ativando-o no OpenSUSE Linux. Para fazer isso, use o gerenciador de pacotes YaST. Para ativar o SSH com o YaST no OpenSUSE:

  1. Clique no menu iniciar, digite terminal e escolha Konsole, supondo que você tenha instalado o Gerenciador de Desktop KDE ao instalar o OpenSUSE.
  2. No terminal, abra o YaST executando sudo yast.
  3. Uma vez no YaST, desça até sistema, depois vá para a direita até gerenciador de serviços e pressione Enter para prosseguir.
  4. Desça até sshd e pressione alt+s para iniciar o serviço SSH.
  5. Pressione alt+r para alterar o modo de inicialização de manual para automático. Isso garantirá que o serviço do servidor SSH seja iniciado mesmo após uma reinicialização.
  6. Pressione alt+o para confirmar as alterações e aplicá-las.

Você pode ver essas etapas em ação abaixo.

Using YaST from the command line to enable SSH

Permitindo SSH no Firewall

Quase toda distribuição Linux vem com algum tipo de firewall para protegê-lo, assim como o Windows. Você pode ler sobre o firewall do OpenSUSE aqui. Para garantir o acesso remoto ao serviço SSH a partir do Windows, você deve permiti-lo no firewall. Para fazer isso:

  1. Ainda no terminal, inicie o YaST novamente com sudo yast.
  2. Desça até Segurança e Usuários e vá para a direita até Firewall e pressione Enter para prosseguir.
  3. Navegue até Zonas –> Público e vá para a direita até o painel Serviços—Portas.
  4. Desça para encontrar ssh nos serviços.
  5. Selecione ssh com a barra de espaço e pressione alt+d para adicionar a seleção.
  6. Pressione alt+a para aceitar as alterações.

Você pode ver todos esses passos acima representados visualmente abaixo.

Using YaST from the command line to let SSH through the firewall

Assim como o Windows, o Linux possui diferentes níveis de confiança para aplicar regras de firewall. Esses níveis são chamados de zonas. O Windows possui zonas pública, de trabalho e privada por padrão. O Linux possui muitas mais, mas por padrão utiliza a zona pública.

Conectando-se ao Linux a partir do Windows

Felizmente, nos dias de hoje, o Windows 10 possui um cliente SSH integrado. Para se conectar a um host Linux, abra um prompt de comando (cmd) ou console do PowerShell e especifique o nome de usuário com o qual deseja se conectar e o IP ou nome do host.

> ssh <username>@<ip address>

Se tudo correr bem, o cliente SSH deverá solicitar que você aceite uma impressão digital. Uma impressão digital é um identificador para garantir que alguém não tenha sequestrado o endereço IP de destino.

Se estiver executando o Windows 7, ainda é possível SSH para o seu host Linux. Você só precisará baixar o cliente SSH da Microsoft aqui. Este cliente SSH é o mesmo que o Windows 10 utiliza.

Assim que você digitar yes e inserir sua senha, estará conectado ao seu servidor! Agora você pode usar a linha de comando como se estivesse abrindo um terminal no próprio computador.

Não exponha o SSH (porta padrão 22) à Internet através do seu roteador. Bots rastreiam constantemente a Internet em busca de portas SSH abertas. Assim que um bot encontrar uma porta aberta, começará a enviar senhas tentando invadir por força bruta.

Habilitando o Suporte ao Mouse no SSH com Windows

Um dos grandes inconvenientes de usar o cliente SSH nativo do Windows 10 (pelo menos no momento desta escrita) é a falta de suporte ao mouse. Isso significa que você não pode usar um mouse no midnight commander como aprendeu em um post anterior do blog.

Felizmente, a partir da versão oito do cliente OpenSSH para Windows, você pode obter suporte ao mouse! Vamos instalar este cliente.

  1. Baixe a última versão do OpenSSH-Win64 aqui e extraia o arquivo zip resultante. O tutorial vai assumir que você extraiu para ~\Downloads\OpenSSH-Win64.
  2. Abra um console do PowerShell e navegue até ~\Downloads\OpenSSH-Win64 com cd ~\Downloads\OpenSSH-Win64.
  3. Verifique a versão do cliente SSH executando .\\ssh -V. No momento desta escrita, a versão deve ser 8.1.0.0-p1.
  4. Conecte-se ao seu servidor Linux usando .\ssh <usuário>@<ip>.
  5. Uma vez conectado, teste o suporte ao mouse executando mc para rodar midnight commander e garantir que você possa usar o mouse.

Você pode ver todos esses passos acima representados visualmente abaixo.

Sobrepondo o Cliente SSH Padrão

Se você deseja usar a nova versão de forma mais permanente, você pode; mas precisa substituir o cliente SSH padrão do Windows 10. Isso garante que sempre que você executar ssh no prompt de comando, a versão mais recente (com suporte a mouse) seja utilizada.

Supondo que você tenha extraído o cliente para a pasta ~\Downloads\OpenSSH-Win64

  1. Mova a pasta OpenSSH-Win64 extraída para uma pasta permanente de sua escolha. Este tutorial usará C:\users\public\OpenSSH-Win64.
  2. Vá para Iniciar e então Executar e digite sysdm.cpl ou abra Sistema no painel de controle.
  3. Na guia Avançado, clique em Variáveis de Ambiente.
  4. Em Variáveis do Sistema, clique em Caminho.
  5. Clique em Novo para adicionar um novo caminho e forneça o caminho da pasta do cliente SSH (C:\users\public\OpenSSH-Win64 neste caso).
  6. Clique em Mover para Cima até que esteja acima da pasta %SystemRoot%\system32. Isso garantirá que sempre que você digitar ssh no prompt de comando, o Windows procurará aqui primeiro.
  7. Abra um console PowerShell e execute ssh -V. Você deverá ver a versão como 8.1.0.0-p.

Esses passos estão resumidos abaixo.

Overriding the Default SSH Client

Dar prioridade a uma pasta sobre %SystemRoot%\system32 pode ser um risco de segurança. Se alguém tiver acesso ao seu computador, poderá decidir inserir um vírus na pasta OpenSSH-Win64 e nomeá-lo como uma utilidade do Windows, como cd.exe.

Você deve restringir a pasta OpenSSH-Win64 para ser somente leitura para qualquer pessoa, exceto administradores.

  1. Clique com o botão direito na pasta OpenSSH-Win64 e clique em Propriedades.
  2. Na guia Segurança, clique no botão Avançado.
  3. Clique em Desativar herança para permitir permissões personalizadas na pasta e impedir que as pastas superiores substituam as permissões na pasta OpenSSH-Win64.
  4. Escolha Adicionar, encontre o grupo Administradores e dê a eles direitos totais.
  5. Clique em Adicionar, encontre o grupo Todos e dê a eles permissões somente leitura.
  6. Selecione a opção Substituir todas as permissões dos objetos secundários para propagar essas configurações para todos os arquivos na pasta OpenSSH-Win64; clique em Aplicar.
  7. Agora teste essas permissões criando um novo arquivo na pasta OpenSSH-Win64. O Windows deve exigir uma solicitação de administrador.

Você pode ver todos esses passos acima representados visualmente abaixo.

restrict the OpenSSH-Win64 folder

Gerenciando Sessões Desconectadas com Tmux

Ah, que dor de cabeça! Você está no meio da execução de um comando demorado via SSH e sua Internet cai. Agora você não faz ideia em que estado o servidor Linux está! Ele terminou o comando? Como recuperá-lo?

Sessões desconectadas são um problema legítimo com o SSH e felizmente têm uma solução direta. Você precisa de um multiplexador de terminal (tmux).

O Tmux representa tanto a abreviação de multiplexador de terminal quanto o nome do próprio programa

O Tmux é um gerenciador de sessões para SSH. Ele “segura” uma sessão se você for desconectado e a mantém em execução em segundo plano. Você pode reconectar a essa sessão mais tarde ou até mesmo criar várias sessões e alternar entre elas.

Para gerenciar sessões desconectadas com o tmux:

  1. No terminal do Linux, faça o download e instale a utilidade tmux executando sudo zypper install -y tmux conforme mostrado abaixo:

Você também pode usar o YaST para baixar a utilidade tmux.

Tmux Utility

A maioria das distribuições Linux possui um gerenciador de pacotes de linha de comando diferente. O OpenSUSE usa o zypper. O Arch usa o pacman. O Ubuntu usa o apt. O Red Hat usa o dnf e o yum. Felizmente, a sintaxe desses gerenciadores de pacotes é bastante semelhante em todas as distribuições.

2. No seu computador Windows, abra um console do PowerShell e faça SSH para o seu servidor Linux. Este tutorial usará um nome de usuário homelab e um IP de servidor Linux de 192.168.134.169.

ssh <username>@<ip address>

3. Abra o tmux executando o comando tmux assim que estiver conectado. Você deverá ver uma barra verde na parte inferior

4. Execute um comando que exiba algum texto. Não importa qual seja. Este tutorial está usando o neofetch. Você também pode executar o comando ls.

5. Desconecte a sessão fechando o PowerShell. Essa ação simula uma interrupção na conexão.

6. Reconecte-se ao seu servidor Linux novamente usando SSH.

7. Agora, reanexe à sessão anterior executando o comando tmux a. Você ainda deve ver a saída do comando ls anterior. Uhu, nenhum dado foi perdido após a desconexão!

Você pode visualizar todos esses passos acima representados visualmente abaixo.

Managing Disconnected Sessions with a Tmux

Se você tentar executar o utilitário Midnight Commander dentro do tmux, pode perceber que não tem suporte ao mouse. Você pode corrigir isso executando mc -x em vez disso.

Habilitando tmux no Login

Por padrão, o tmux não estará disponível em todas as sessões SSH. Você pode mudar isso forçando o tmux a se conectar à sua sessão SSH toda vez que fizer login.

Assumindo que você está conectado via SSH ao seu servidor Linux:

  1. Abra o utilitário Midnight Commander usando o mc.

2. Destaque o arquivo .bashrc e pressione editar.

O arquivo .bashrc é um script de shell que é executado toda vez que você faz login via linha de comando

3. Adicione o código de script de shell abaixo ao final do arquivo de texto.

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi

4. Clique em sair e salve quando solicitado.

5. Teste o auto-conectar do tmux desconectando-se de sua sessão SSH e reconectando-se. Você deve ver automaticamente uma barra verde na parte inferior, indicando que está conectado a uma sessão tmux!

Isso é apenas arranhar a superfície do que o tmux pode fazer, é um programa de multitarefa muito poderoso. Se você perguntar a qualquer administrador de Linux qual é o comando mais usado deles, provavelmente é o tmux.

Conclusão

Isso conclui o último post da série de posts do blog Um Cara do Windows em um Mundo Linux. Fique ligado no blog ATA para o próximo post que está por vir!

Source:
https://adamtheautomator.com/ssh-command-in-linux/