Secure Shell (SSH) é um protocolo de rede criptográfico usado para operar serviços remotos com segurança. Ele é usado para operação remota de dispositivos em canais seguros usando uma arquitetura cliente-servidor que geralmente opera na Porta 22. SSH é o sucessor do Telnet. SSH usa chaves públicas e privadas para validar e autenticar usuários. ssh-keygen é usado para gerar esses pares de chaves.

Você pode aprender mais sobre SSH e Telnet aqui

Como funciona o SSH?

  • O protocolo SSH precisa ter 2 pares. Uma chave pública e uma chave privada
  • A chave pública é adicionada ao servidor (ou) dispositivo remoto em uma pasta especial $HOME / .ssh / authorized_keys.
  • Quando o servidor envia qualquer resposta criptografada usando a chave pública, já que apenas o cliente possui a chave privada, ele só pode descriptografar a resposta.
  • Após a autenticação bem-sucedida, uma sessão de shell é criada ou o comando solicitado é executado no servidor remoto.

Como funciona o SSH

SSH-KEYGEN

ssh-keygen é o utilitário usado para gerar, gerenciar e converter chaves de autenticação para SSH. O ssh-keygen vem instalado com SSH na maioria dos sistemas operacionais. O ssh-keygen é capaz de gerar uma chave usando um dos três algoritmos de assinatura digital diferentes.

  • RSA
  • DSA
  • ECDSA

Arquivos gerados por ssh-keygen

  • $HOME / .ssh / identity: Arquivo contendo a chave privada RSA ao usar o protocolo SSH versão 1.
  • $HOME / .ssh / identity.pub: Arquivo contendo a chave pública RSA para autenticação quando você estiver usando a versão do protocolo SSH
  • $HOME / .ssh / id_dsa: Arquivo contendo a identidade de autenticação DSA da versão 2 do protocolo do usuário.
  • $HOME / .ssh / id_dsa.pub: Arquivo contendo a chave pública DSA para autenticação quando você estiver usando a versão do protocolo SSH.
  • $HOME / .ssh / id_rsa: Arquivo contendo a identidade de autenticação RSA da versão 2 do protocolo do usuário. Este arquivo não deve ser lido por ninguém além do usuário.
  • $HOME / .ssh / id_rsa.pub: Arquivo contendo a chave pública RSA da versão 2 do protocolo para autenticação.

Os arquivos “.pub” devem ser copiados para o arquivo $HOME / .ssh / authorized_keys do sistema remoto onde um usuário deseja efetuar login usando autenticação SSH.

Gerando pares de chaves usando ssh-keygen

Quase todas as distros Unix e Linux vêm pré-instaladas com SSH e ssh-keygen, portanto, não precisaremos instalar. Começaremos diretamente. Este processo é quase semelhante a quase todas as distros do Linux

Abra seu terminal e digite ssh-keygen

ssh-keygen

Ele pede os nomes dos pares de chaves ssh. Se você deseja inserir a senha, vá em frente e o ssh-keygen criará automaticamente suas chaves.

//Output

Generating public/private rsa key pair.

// enter the name for ssh key pairs
Enter file in which to save the key (/home/kushwanth/.ssh/id_rsa): gfg

// enter passpharse for security
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

// ssh keys generated
Your identification has been saved in gfg
Your public key has been saved in gfg.pub

ssh key gen criado

Uma chave pública se parece com a abaixo.

Amostra de chave pública

Esta é a chave que você precisa copiar em seu dispositivo remoto para obter uma autenticação SSH bem-sucedida.

Copiando a chave pública para o servidor remoto

Depois que o par de chaves é criado, agora precisamos copiar a chave pública para o servidor. Existem 2 maneiras de fazer isso, usando ssh-copy-id (ou) copiando-o manualmente para o servidor.

Usando ssh-copy-id

Use o comando ssh-copy-id para copiar seu arquivo de chave pública (por exemplo, $HOME / .ssh / id_rsa.pub) para sua conta de usuário no servidor remoto.

ssh-copy-id -i $HOME / .ssh / id_rsa.pub <user> @ <your-remote-host>

Copiar manualmente a chave pública

Faça login em seu servidor remoto usando a senha e crie um diretório em $HOME / .ssh. Você pode usar o comando abaixo.

ssh <usuário> @ <seu host remoto> “umask 077; test -d .ssh || mkdir .ssh ”

  • ssh <usuário> @ <host> permite que você faça o login em seu servidor host remoto
  • Se o diretório .ssh já estiver presente, ele definirá as permissões do diretório como 077 para permitir a permissão de leitura, gravação e execução para o proprietário do arquivo, mas proíbe a permissão de leitura, gravação e execução para todos os outros.
  • Se o diretório não estiver presente, ele criará um novo.

Agora envie sua chave pública para o servidor remoto,

cat $HOME / .ssh / id_rsa.pub | ssh <user> @ <your-remote-host> “cat >> .ssh / authorized_keys”

  • cat permite que você imprima o conteúdo do arquivo no terminal.
  • A saída do cat é canalizada para o SSH para anexar a chave pública a um servidor remoto.

Agora você pode fazer logout e testar se pode se conectar ao servidor remoto usando o protocolo SSH.