Desenvolvimento

Fundamentos Essenciais de SSH: Domine os Comandos Básicos

Está querendo criar uma chave ssh? Criar alias? Neste artigo vamos mostrar algumas dicas para quem está iniciando agora a trabalhar com SSH. Caso no decorrer do artigo ainda tenha alguma dúvida não deixe de comentar.

Pré-requisitos

Independente da plataforma que você esteja usando, seja Windows, Linux ou Mac Os, você precisa do SSH cliente instalado, caso não tenha ele instalado vamos dar algumas opções abaixo:

No Windows você pode instalar o Git Bash ou usar o WLS/Ubuntu com os comandos a seguir.
Abra o terminal e rode os comandos:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-client
Bash

No MacOs já vem pré-instalado.

Geração de Chaves SSH e Configuração

Seja para clonar um repositório no GitLab/GitHub ou para se conectar a um servidor via SSH, o uso de chaves SSH é uma das formas mais seguras de autenticação. Diferente das senhas, mesmo as mais complexas, as chaves criptográficas oferecem um nível de segurança significativamente maior.

Antes de gerar sua chave, é importante entender que existem diferentes tipos de algoritmos criptográficos disponíveis — e alguns deles já não são mais recomendados. Veja a seguir um comparativo entre eles:

AlgoritmoPopularidadePerformanceSegurança
RSAMais amplamente implementado e suportado.Chaves maiores exigem mais tempo para geração.Pode ser quebrado com algoritmos como Quadratic Sieve e General Number Field Sieve.
DSAMenos popular devido ao histórico de falhas de segurança.Geração de assinatura rápida, mas validação lenta.Se o número aleatório usado não for seguro, a chave privada pode ser revelada.
ECDSARelativamente novo, mas menos popular que o EdDSA.Chaves públicas têm o dobro do tamanho da segurança desejada.Vulnerável se os números aleatórios não forem criptograficamente seguros.
EdDSABastante popular entre bibliotecas modernas.Melhor desempenho em todos os aspectos.Oferece o maior nível de segurança em relação ao tamanho da chave. Corrige falhas do ECDSA.

Agora que você já entende os principais tipos de algoritmos, suas vantagens e desvantagens, vamos à prática: veja abaixo como gerar cada tipo de chave usando o comando ssh-keygen.

Gerar chave RSA (recomendado: 4096 bits)

ssh-keygen -t rsa -b 4096 -C "minha-chave-rsa"
Bash

Gerar chave DSA (não recomendado, obsoleto em muitos sistemas)

ssh-keygen -t dsa -C "minha-chave-dsa"
Bash

Gerar chave ECDSA (com curva de 521 bits, a mais segura das ECDSA)

ssh-keygen -t ecdsa -b 521 -C "minha-chave-ecdsa"
Bash

Gerar chave Ed25519 (implementação do EdDSA, altamente recomendada)

ssh-keygen -t ed25519 -C "minha-chave-ed25519"
Bash

Siga as instruções para configurar o local de armazenamento e, opcionalmente, uma senha para a chave. Depois de gerar as chaves, você pode adicionar a chave ao agente SSH para evitar a necessidade de inserir a senha repetidamente:

ssh-add ~/.ssh/sua_chave_privada
Bash

Finalmente, copie a chave pública para o servidor remoto com:

ssh-copy-id username@hostname
Bash

Agora, você pode autenticar-se no servidor remoto sem a necessidade de senha.

Conectando-se ao Servidor Remoto

Para conectar em um servidor SSH podemos usar diversos parâmetros, que em sua maioria são opcionais, mas para você pode fazer sentido:

  • -p: Porta do servidor, o padrão é 22
  • -o PasswordAuthentication=yes/no Indica se deseja usar senha na conexão
  • -o PubkeyAuthentication=yes/no Indica se deseja usar chave pública na conexão
  • -i /caminho/para/sua/chave/publica.pub Indica o caminho da sua chave pública, usado quando ela não está no caminho padrão

Abaixo um exemplo usando uma conexão com senha e a porta do servidor é a 2222.

ssh usuario@servidor -p 2222
Bash

Caso queira usar uma chave pública ficaria assim:

ssh -i /caminho/para/sua/chave/publica.pub usuario@servidor -p 2222
Bash

Use os demais exemplos para seu caso.


Transferência Segura de Arquivos com SCP

Com o SCP você pode tanto copiar arquivos do seu PC pro servidor quanto do servidor pro seu PC.
Esse comando suporta alguns parâmetros que podem te auxliar:

  • -p: Porta do servidor, o padrão é 22
  • -r: Recursivamente copia diretórios e seus conteúdos
  • -v Ativa o modo verbose, exibindo detalhes sobre o processo de transferência
  • -i /caminho/para/sua/chave/publica.pub #indica o caminho da sua chave pública, usado quando ela não está no caminho padrão
  • -B: Utilizado para realizar transferências em segundo plano

Dito isso vamos simular que deseja copiar um arquivo do seu pc pro servidor e vice-versa:

scp caminho/do/arquivo.txt username@hostname:/caminho/destino
Bash

Já o fluxo inverso você poderia fazer assim:

scp username@hostname:/caminho/no/servidor/arquivo.txt /caminho/no/seu/computador
Bash

Executando Comandos Remotos

Além de simplesmente conectar-se ao servidor, o SSH permite a execução remota de comandos. Isso é especialmente útil para automatizar tarefas repetitivas. O formato básico é:

ssh username@hostname "comando a ser executado"
Bash

Configurações SSH para Facilitar Conexões

Para simplificar ainda mais suas conexões SSH, você pode utilizar o arquivo de configuração SSH. Edite ou crie o arquivo ~/.ssh/config e adicione entradas para seus hosts. Isso permite que você use aliases em vez de digitar o nome do host completo e configure opções adicionais, como chaves de autenticação e portas personalizadas.

Exemplo de configuração no arquivo ~/.ssh/config:

Host meu-servidor
  HostName hostname
  User username
  Port 2222
  IdentityFile ~/.ssh/chave_privada
Bash

Com essa configuração, você pode conectar-se simplesmente digitando:

ssh meu-servidor
Bash

Usando Chaves Diferentes no Mesmo Servidor

Caso, por diversos motivos, você tenha mais de uma conta no gitlab.com, github.com ou em qualquer outro servidor que permita vincular uma chave SSH, pode se deparar com o seguinte cenário: na conta A você usa uma chave e na conta B você usa outra chave. Por padrão, você teria que optar por usar uma chave por vez. Porém, usando aliases e o arquivo de configuração do SSH, você consegue chegar a uma solução:

Host gitlab-pessoal
  HostName gitlab.com
  User git
  Port 22
  IdentityFile ~/.ssh/pessoal

Host gitlab-profissional
  HostName gitlab.com
  User git
  Port 22
  IdentityFile ~/.ssh/profissional
Bash

Essa solução combina o uso de aliases com a configuração do SSH. Agora, quando quiser conectar ao servidor pessoal, basta clonar ou validar a configuração destas formas:

ssh -T gitlab-pessoal
ssh gitlab-pessoal
git clone gitlab-pessoal:/projeto.git
Bash

Conclusão

Agora que você já conhece alguns comandos ssh, já está pronto para usar a chave no versionamento de código ou no seu servidor. Ficou com alguma dúvida? Fique a vontade para comentar.

Deixe um comentário

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

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Sair da versão mobile