Criar chave para acesso SSH sem senha

Gerando a sua chave no Windows

Certifique-se que o Windows já esteja com o OpenSSH instalado. Caso não esteja, siga os passos abaixo:

Instalando o OpenSSH no Windows

  1. Abra o PowerShell como administrador
  2. Execute os comandos abaixo, isso irá instalar o OpenSSH Client e Server, além de iniciar o serviço e configurar para iniciar automaticamente:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service -Name ssh-agent | Set-Service -StartupType 'Automatic'

Caso haja algum problema nos comandos acima, verifique através da interface gráfica se o serviço foi instalado e se está iniciado, conforme a imagem abaixo:

Serviço OpenSSH instalado e iniciado

Gerando a chave

Para gerar a chave ssh no Windows, abra o PowerShell e execute o comando abaixo:

ssh-keygen -t rsa -b 4096

O comando acima irá gerar uma chave RSA de 4096 bits. Caso queira gerar uma chave de outro tipo, basta alterar o parâmetro -t para o tipo desejado. Para mais informações, execute o comando ssh-keygen -h.

Você pode obter mais informações no endereço https://learn.microsoft.com/pt-br/windows-server/administration/openssh/openssh_keymanagement.

Adicionando a sua chave privada no Windows

Para adicionar a sua chave privada no Windows, basta executar o comando abaixo no PowerShell:

ssh-add ~/.ssh/id_rsa

Caso tenha problema ao executar o comando acima, mesmo depois de instalar as dependências listadas logo no início do artigo, certifique-se de ter iniciado o ssh-agent

Start-Service ssh-agent

Implantando a chave no servidor

Para cadastrar a chave no servidor, basta copiar o conteúdo do arquivo id_rsa.pub para o arquivo ~/.ssh/authorized_keys no servidor, você pode fazer isso manualmente ou usando o comando abaixo:

cat ~/.ssh/id_rsa.pub | ssh user@host -p 22 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && systemctl restart sshd"

Gerando a chave no Linux Ubuntu

ssh-keygen -t rsa -b 4096 -C "

Criar um par de chaves

ssh-keygen -t rsa -b 4096 -C "

Copiar a chave pública para o servidor

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Copiar a chave pública para o servidor que usar porta diferente de 22

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@host

Configurar o SSH para não pedir senha

Caso você queira que o acesso ao SSH seja exclusivamente por chave, você pode desabilitar o acesso por senha. Para isso, edite o arquivo /etc/ssh/sshd_config e altere a variável PasswordAuthentication e em seguida reinicie o serviço.

vim /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshd

Referências