Cliente SSH
O SSH Client é um programa que permite conectar e fazer login com segurança em um computador remoto (um servidor SSH) por meio de uma rede, fornecendo uma interface de linha de comando (CLI) para administração remota, transferências de arquivos (SFTP) e tunelamento seguro.
Instalação SSH Client em um computador Linux
Section titled “Instalação SSH Client em um computador Linux”Muitas distribuição Linux já possui um cliente SSH pré-instalado, mas se precisar, os comandos abaixo instalam o pacote openssh-client:
sudo apt install openssh-clientsudo yum install openssh-clientsPara verificar a instalação:
ssh -VO primeiro acesso
Section titled “O primeiro acesso”Antes de mostrar como usar o SSH Client para se conectar à uma máquina remota, preciso mostrar o que acontece ao conectar na primeira vez via SSH.
Na sua primeira conexão você verá uma mensagem semelhante a esta:
ssh sysadmin@192.168.0.100The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.ED25519 key fingerprint is SHA256:MqBPY8ng+no7j/57haVfkUgW4iQlHcIoCYQAGXb2WuE.This key is not known by any other names.Are you sure you want to continue connecting (yes/no/[fingerprint])?Vou explicar cada parte:
ssh syssadmin@192.168.0.100: Você está tentando conectar como usuáriosysadminno servidor com IP192.168.0.100.The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.: É a primeira vez que você se conecta a esse servidor. O SSH não tem registro prévio dessa máquina no arquivo~/.ssh/known_hosts, então não pode verificar automaticamente se o servidor é realmente quem diz ser.ED25519 key fingerprint is SHA256:MqBPY8ng+no7j/57haVfkUgW4iQlHcIoCYQAGXb2WuE.: O servidor apresentou sua chave pública ED25519 (um algoritmo moderno de criptografia assimétrica). O fingerprint é um hash SHA256 dessa chave - é como uma “impressão digital” única do servidor.This key is not known by any other names.: Essa chave não está associada a outros nomes de host ou IPs no seu sistema.Are you sure you want to continue connecting (yes/no/[fingerprint])?: O SSH está pedindo confirmação. Você tem três opções:yes: Aceita e adiciona a chave ao known_hostsno: Cancela a conexãofingerprint: Você pode colar o fingerprint exato para validação adicional
Agora, de forma mais detalhada:
- Início da Conexão. Quando você executa
ssh sysadmin@192.168.0.100, o cliente SSH:- Estabelece uma conexão TCP na porta 22 (padrão SSH)
- Inicia o handshake SSH com o servidor
-
Troca de Identidade do Servidor. O servidor envia sua chave pública (host key) para provar sua identidade. No seu caso, é uma chave ED25519. Cada servidor SSH tem um par de chaves única:
- Chave privada: fica guardada no servidor (ex:
/etc/ssh/ssh_host_ed25519_key) - Chave pública: enviada aos clientes (ex:
/etc/ssh/ssh_host_ed25519_key.pub)
- Chave privada: fica guardada no servidor (ex:
-
Verificação da Autenticidade. O cliente SSH procura essa chave no arquivo
~/.ssh/known_hosts. Como é a primeira vez:- Não encontra nada registrado → não pode validar automaticamente
- Calcula o fingerprint (hash SHA256) da chave recebida
- Exibe o aviso pedindo sua confirmação manual
- Sua Decisão. Aqui está o ponto crítico de segurança. Você precisa ter certeza que está falando com o servidor correto, não com um impostor. Idealmente, você deveria:
- Pegar o fingerprint real do servidor (logando diretamente nele ou consultando o admin)
- Comparar com o exibido na tela
- Só aceitar se for idêntico
- Ao Digitar
yes. O cliente SSH:- Adiciona a chave do servidor em
~/.ssh/known_hosts - Marca aquele IP/hostname como confiável
- Prossegue com a autenticação do usuário (senha ou chave SSH)
- Adiciona a chave do servidor em
- Conexões Futuras. Nas próximas vezes que você conectar:
- O servidor enviará a mesma chave pública
- O cliente compara com a registrada no
~/.ssh/known_hosts - Se for idêntica: conexão prossegue automaticamente
- Se for diferente: SSH bloqueia e exibe alerta de possível ataque MITM (man-in-the-middle).
Conectando usando usuário e senha
Section titled “Conectando usando usuário e senha”No SSH podemos conectar usando o padrão usuário e senha ou usando chaves criptográficas (chave pública e chave privada).
Nesta etapa irei mostrar as diferentes formas de acessar uma máquina via SSH usando usando o padrão usuário e senha
A forma mais simples de acesso SSH
Section titled “A forma mais simples de acesso SSH”fernando@meupc:~$ ssh 192.168.0.100fernando@meupc:~$: Este é o prompt do Bash no meu computador local, ele mostra que o usuáriofernandoestá logado no computadormeupc.ssh 192.168.0.100: Este é o comando em si, onde eu uso o comandosshpara conectar no computador que possui o endereço IP192.168.0.100.
Quando conectamos desta forma o SSH entende que você pretende usar o mesmo usuário local para se conectar no servidor remoto. No comando acima, ele irá considerar que no computador remoto você já possui o usuário fernando.
A saída do comando será assim:
fernando@192.168.0.100's password:É só inserir a senha do usuário fernando. Lembrando que este usuário deve estar configurado na máquina remota e a senha pode ser diferente do computador local.
Acesso informando um usuário
Section titled “Acesso informando um usuário”No meu computador eu utilizo o usuário fernando porém, não computador que eu quero acessar eu utilizo o usuário sysadmin.
Vamos acessar agora informando o usuário remoto:
ssh sysadmin@192.168.0.100ssh: O cliente SSHsysadmin: O usuário do computador remoto que vou usar para logar.@: Vem do inglês “at” e indica que o usuário (sysadmin) irá conectar na máquina remota (192.168.0.100).192.168.0.100: Endereço IP da máquina remota. Ao invés do endereço IP pode ser o endereço DNS.
Será solicitada a senha do usuário sysadmin:
sysadmin@192.168.0.100's password:Depois de conectar
Section titled “Depois de conectar”Após a conexão (usando usuário e senha ou chaves criptográficas) e depois da mensagem do primeiro acesso (fingerprint) você verá um prompt da máquina remota:
sysadmin@server01:~$sysadmin: O nome do usuário logado na máquina remota.server01: O nome (hostname) da máquina remota.~: Indica que está no diretóriohomedo usuáriosysadmin(/home/sysadmin/).$: Indica que não é um usuárioroot.