Carregando...
Sem categoria

Acessando computadores remotamente via SSH

O SSH é o protocolo mais famoso e usado para acessar computadores remotamente via terminal (linha de comando, prompt de comando). Para o acesso remoto SSH funcionar você precisa:

No computador que será controlado remotamente ➤ instalar um servidor SSH

No computador que controlará o outro ➤ instalar um cliente SSH

Há alguns programas muito conhecidos de cliente e servidor SSH, tanto para Windows e Linux.

Instalando softwares de SSH

Linux

O Linux possui 2 softwares famosos de SSH. OpenSSH e o Dropbear.

O OpenSSH é o mais famoso e com mais funcionalidades, ele vem instalado por padrão nas distribuições mais comuns do Linux (Debian, Ubuntu, Mint, RHEL, Fedora, CentOS, ArchLinux).

O Dropbear é o mais usado em sistemas Linux embarcados. Ele é usado muito em roteadores tipo DD-WRT e OpenWRT por ser mais leve que o OpenSSH. Pessoas também costumam instalar ele no initramfs para decriptar remotamente sistemas com LUKS.

OpenSSH

O OpenSSH pode vir em dois pacotes diferentes:

  • openssh-client para permitir que você controle outro computador remotamente
  • openssh-server para permitir que outros computadores controlem o seu remotamente

Descubra se o openssh-client está instalado e sua versão com:

openssh -V
# Aparecerá algo tipo:
# OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d  10 Sep 2019

Caso não encontre-o, instale-o:

# Debian / Ubuntu / Mint
sudo apt install openssh-client

Descubra se o openssh-server está instalando e sua versão com:

# Debian / Ubuntu / Mint
sudo dpkg -l openssh-server

Para instalá-lo use

# Debian / Ubuntu / Mint
sudo apt install openssh-server

Uma vez instalado, o openssh-server fica sempre ligado, esperando conexões em forma de daemon/serviço. Verifique se ele está online pelo:

# Debian / Ubuntu / Mint
sudo systemctl status ssh

Usando o OpenSSH client para iniciar o controle remoto!

# Acesso via senha
ssh user@123.123.123.123

# Acesso com chave privada
ssh -i /pasta/chave-privada.pem user@123.123.123.123 

Usando o OpenSSH server para permitir que seu computador seja controlado remotamente!

sudo apt install openssh-server

Para mudar as configurações do servidor OpenSSH, edite o seguinte arquivo:

sudo nano /etc/ssh/sshd_config

Dropbear

Ainda não testei o Dropbear, mas pretendo fazer um tutorial. Se puder me ajudar envie nos comentários!

Windows

Putty – O cliente SSH mais conhecido no Windows

É o cliente SSH mais conhecido para Windows. Encontre-o aqui.

Kitty – Um fork (cópia) do Putty com algumas melhorias

Uma cópia do Putty que permite salvar logins e senhas das conexões. Encontre-o aqui.

Segurança do SSH

Ao iniciar uma conexão SSH é realizada 2 etapas de segurança:

  • Verificação do SSH fingerprint (impressão digital SSH)
  • Verificação da autenticação (login, senha, chaves…)

Verificação do SSH Fingerprint

Ao instalar o software de servidor SSH, uma chave pública e privada é gerada por ele no final da instalação.

Para o cliente iniciar uma conexão SSH totalmente segura, o cliente precisa saber de antemão a chave pública do servidor e salvá-la no SSHFP Resource Record. Não se assuste com o nome, em outras palavras: é só salvar a chave pública e o IP do servidor em um arquivo texto especial.

Por quê tudo isso? Porque conexões TCP/IP não são seguras (salvo raros casos)! Você não pode confiar em um IP, ter um endereço IP não é garantia suficiente de que aquela máquina é a qual você quer se conectar. Um computador invasor na rede pode facilmente assumir o IP da máquina remota e fingir ser ela, ficar esperando um cliente se conectar usando login e senha e anotá-los no momento em que a tentativa de conexão for realizada. É um problema de segurança bem sério, é o famoso Man-in-the-Middle.

Caso um cliente inicie uma conexão SSH, e a chave publica (SSH fingerprint) seja diferente do esperado, um aviso será dado pelo programa.

Caso o cliente inicie uma conexão SSH sem ter nenhuma chave pública (SSH fingerprint) cadastrada para aquele IP, o programa perguntará se você quer confiar naquela chave enviada pelo servidor e armazená-la para futuras conexões.

Verificação de autenticação

Depois da verificação do SSH Fingerprint, o cliente envia suas credenciais. As credenciais enviadas pelo cliente são basicamente uma interação tipo: “oi, eu sou fulano e essa é minha senha/chave, você me permite controlar a máquina remotamente?”. Nesta etapa o servidor pode permitir ou negar o acesso. Se permitir, a conexão está feita e pronta para usar.

Existem alguns tipos de autenticação:

  • Login e senha
  • Login e chave Pública RSA
  • Login e chave GPG
  • Login e certificado X.509

Login e Senha

É a forma mais comum de simples de iniciar uma conexão SSH. Basta informar seu login e a senha do usuário e pronto.

Login e chave Pública/Privada RSA

É a forma mais recomendada e falada pelos “especialistas de segurança da internet”. Nela, o cliente precisa criar uma chave pública e privada, salvar a chave pública na máquina remota (SSH server) e salvar a chave privada na máquina local (SSH client).

Login e chave GPG

Uma forma mais avançada para se conectar via SSH. Com uma chave GPG você pode usar um smart card como forma de autenticação. Aqui vai um ótimo tutorial para configurar SSH com GPG.

Login e certificado X.509

Por padrão o OpenSSH não suporta certificados X.509 para autenticação, mas existe um fork do OpenSSH por Roumen Petrov que implementa essa função. Leia mais nesta discussão do Stack Exchange.

É possível extrair a chave RSA de uma chave privada X.509, apesar disso, não podemos considerar isso como autenticação X.509, mas caso tenha interesse, veja esse tutorial.

Automatizando acesso SSH

O OpenSSH client não dá formas de conectar com login e senha automaticamente. Algumas formas estão descritas nessa discussão.

sshpass

É o software mais comum e recomendado, mas ele tem um problema sério: ele pula a verificação do SSH Fingerprint.

passh

Uma alternativa ao sshpass, mas verifica o SSH Fingerprint.
Confira o github.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *