Nesse tutorial vamos ensinar a criar e configurar o acesso a um servidor SSH usando chave pública.
Para esse tutorial, vamos usar duas máquinas virtuais que estão dentro da mesma rede.
No entanto, o cenário usado pode ser replicado para máquinas que estão em outras redes e até na Internet.
Cenário usado
A figura abaixo mostra nosso cenário de laboratório. Nesse caso temos:
Máquina Cliente: Vai usar o cliente SSH para acessar o servidor.
Máquina Servidora: Vai ouvir na porta 22 usando o servidor OpenSSH.

Criando chave pública para o cliente SSH
Agora vamos entrar na máquina cliente e abrir um terminal. Lembrando que estamos usando uma máquina Linux com Ubuntu.
No terminal vamos usar o comando abaixo para gerar as chaves públicas e privadas para o cliente SSH.
ssh-keygen

Na primeira pergunta se desejamos inserir um nome para o arquivo vamos pressionar “ENTER“.
Na segunda e terceira perguntas se desejamos inserir uma “passphrase” vamos pressionar “ENTER” também.
Obs.Estamos assumindo que vamos manter a chave privada segura e por isso não vamos usar uma “passphrase“. No seu caso você deve verificar se existe necessidade de usar uma “passprase“.
Em seguida, podemos verificar se as chaves públicas e privadas do SSH foram geradas. Para isso, vamos digitar o comando abaixo que lista o seu diretório de chaves.
ls ~/.ssh/

Agora vamos entrar no diretório onde estão as chaves públicas e privadas do SSH. Para isso vamos usar o comando abaixo.
cd ~/.ssh/

Agora vamos digitar o comando abaixo para listar os arquivos do diretório.
ls

Enviando a chave publica do cliente para o servidor SSH
Nessa etapa, vamos enviar a chave pública do cliente para o servidor SSH. O cliente precisa enviar a chave pública para o servidor, que a armazena no arquivo “~/.ssh/authorized_keys
“ do usuário que irá se conectar.
ssh-copy-id -i id_SeuArquivoPub SeuUsuario@SeuIP

- 1 = o comando ssh-copy-id que vai enviar a chave pública do cliente.
- 2 = a opção “i” que vai indicar o arquivo de chave pública do cliente.
- 3 = O arquivo de chave pública do cliente.
- 4 = o usuário do seu cliente @ o IP do servidor SSH. (No nosso caso o usuário é redes).

Após digitar o comando, aparecerá uma pergunta se deseja continuar. Para continuar, digite “yes” e pressione “ENTER“.
Em seguida, será requisitado o “password” para se conectar ao servidor SSH. Digite a senha de conexão do seu cliente ao servidor SSH.
Testando a conexão com o servidor SSH
E finalmente, podemos entrar no servidor SSH sem senha. Para isso, digite o comando abaixo. Lembre-se de substituir o “redes” pelo seu usuário e o IP pelo IP do seu servidor SSH.
ssh [email protected]

Verificando a chave do cliente no servidor SSH
Se desejar, você pode entrar no servidor e verificar a chave que foi criada para o cliente SSH. Para isso, digite o comando abaixo.
cat ~/.ssh/authorized_keys

E parabéns você conseguiu criar a chave pública para acessar o servidor SSH sem precisar digitar senha.
Veja mais:
Instalar Ubuntu 24 em VirtualBox
Como fazer X11 Forwarding com SSH

Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer