Como criar e utilizar uma chave SSH no Linux

O SSH (Secure Shell) é um protocolo de rede, que permite operar serviços de uma rede com segurança. Com ele é possível se conectar remotamente a diversos dispositivos como servidores de aplicação de forma segura. O SSH utiliza o formato cliente servidor, onde um cliente SSH se conecta a um servidor SSH. Normalmente essa conexão é realizada passando o host, porta, usuário e senha do servidor onde se deseja conectar. Neste artigo vamos ver como utilizar o método de SSH Keys para realizar esta autenticação.

Realizando uma conexão SSH.

Para utilizarmos o SSH, temos que instalar um servidor SSH na máquina em que desejamos conectar, no Linux podemos utilizar o openssh-server. Realize sua instalação com o comando abaixo.

sudo apt install openssh-server

Para realizar a conexão em um servidor SSH,  precisamos de um cliente SSH na máquina de onde queremos realizar a conexão, podemos utilizar o openssh-client. Realize sua instalação com o comando abaixo.

sudo apt-get install openssh-client

Para realizar uma conexão SSH, no terminal Linux podemos utilizar o comando ssh.

ssh -p porta usuario@servidor

Substitua porta pelo número da porta, usuario pelo nome do usuário e servidor pelo HOST em que deseja se conectar.

Chave SSH (SSH Keys)

Uma chave SSH (SSH Keys), é um modo de identificação entre o cliente e servidor utilizando autenticação chave de criptografia pública. Esse método consiste em gerar uma chave privada, que fica armazenada no cliente e uma chave pública, que deve ser armazenada no servidor onde se deseja conectar. Não vou aprofundar aqui sobre chaves SSH e criptografia, em breve criarei um artigo somente abordando este tema mais detalhadamente.

Como gerar uma chave SSH

Acesse a máquina cliente qual deseja utilizar para realizar a conexão. No terminal Linux utilize o comando abaixo.

ssh-keygen -t rsa

Para que o comando funcione, deve estar instalado o openssh-server na máquina. Ao utilizar o comando, será solicitado o local onde deseja armazenar as chaves. Também será solicitado uma senha para a chave, esta senha deve ser digitada toda vez que a chave for utilizada. Neste exemplo deixei tudo como padrão.

Após isto as chaves pública e privada serão geradas e estarão salvas no diretório raiz do usuário, que foi utilizado o comando de geração. Uma chave SSH está ligada ao usuário que foi gerada.

Por exemplo quando gerei uma chave em meu computador com meu usuário, ela está no diretório raiz do meu usuário dentro do diretório oculto .ssh. Para acessar o diretório utilizei o comando.

cd /home/anderson/.ssh/

Dentro deste diretório temos nossas chaves: id_rsa (chave privada), id_rsa.pub (chave pública). Por motivos de segurança, jamais compartilhe sua chave privada com terceiros.

Autenticando em um HOST com a chave SSH.

Agora, para autenticamos em um HOST com nossa chave gerada, precisamos copiar a nossa chave pública para o servidor ao qual queremos realizar conexão. Podemos utilizar o comando scp para realizar esta cópia.

scp -Pporta arquivo usuario@servidor:/diretorio-destino

Substitua as informações no comando, ele ficará da seguinte forma.

scp -P22 /home/anderson/.ssh/id_rsa.pub anderson@servidor.irias.com.br:/home/anderson

Após a cópia da chave, adicione ela no arquivo .ssh/authorized_keys. Utilize o comando abaixo para realizar a adição.

cat id_rsa.pub >> .ssh/authorized_keys

Para que o comando funcione corretamente você deve estar no diretório raiz de seu usuário.

Autenticando no GitHub com a chave SSH

O processo para autenticar no GitHub utilizando nossa chave SSH é bem semelhante. Mas ao invés de copiar nossa chave pública para o servidor que queremos acessar, vamos adicionar no GitHub.

Para realizar a adição da chave no GitHub, siga o seguinte tutorial: https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account. Estou passando este link pois ele é da própria documentação do GitHub, e mostra um tutorial passo a passo com imagens explicando o processo.

Conclusão

Chaves SSH (SSH Keys) são ferramentas bem úteis para autenticação entre cliente e servidor,  mas em minha opinião é algo que se deve ter cuidado e preocupação com a segurança ao ser utilizado. Neste artigo eu apresentei uma visão geral e rápida de como utilizar, mas recomendo que seja feito um estudo maior para que seu ambiente esteja sempre seguro.

Deixe um comentário

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