Pesquisa de site

Como definir permissões corretas de diretório SSH no Linux


Para que o SSH funcione bem, são necessárias permissões corretas no diretório ~/.ssh ou /home/username/.ssh: o local padrão para todas as configurações SSH específicas do usuário e arquivos de autenticação. As permissões recomendadas são leitura/gravação/execução para o usuário e não devem ser acessíveis por grupo e outros.

Além disso, ssh também exige que os arquivos dentro do diretório tenham permissões de leitura/gravação para o usuário e não possam ser acessados por outras pessoas. Caso contrário, um usuário poderá encontrar o seguinte erro:

Authentication refused: bad ownership or modes for directory

Este guia explica como definir permissões corretas no diretório .ssh e nos arquivos armazenados nele, em sistemas Linux.

Definir permissões corretas de diretório SSH no Linux

Se você encontrar o erro acima, poderá definir as permissões corretas do diretório ssh no diretório .ssh usando o comando chmod.

chmod u+rwx,go-rwx ~/.ssh
OR
chmod  0700 ~/.ssh

Para verificar as permissões no diretório ~/.ssh, use o comando ls com os sinalizadores -l e -d, assim:

ls -ld .ssh/

A seguir estão alguns dos arquivos que você encontrará no diretório ~/.ssh:

  • arquivo de chave privada (por exemplo, id_rsa) – a chave privada para autenticação, que contém informações altamente confidenciais, portanto, deve ter permissões de leitura e gravação para o proprietário e não estar acessível por grupo e outros, caso contrário, o ssh se recusará a conectar.
  • chave pública (por exemplo, arquivo .pub) – a chave pública para autenticação, que também contém informações confidenciais, portanto, deve ter permissões de leitura e gravação para o proprietário, permissão somente leitura por grupo e outros.
  • authorized_keys – contém a lista das chaves públicas que podem ser usadas para fazer login como este usuário. Não é altamente confidencial, mas deve ter permissões de leitura e gravação para o proprietário e não pode ser acessado por grupos e outros.
  • known_hosts – armazena uma lista de chaves de host para todos os hosts nos quais o usuário ssh efetuou login. Deve ter permissões de leitura e gravação para o proprietário e não ser acessível por grupos e outras pessoas.
  • config – um arquivo de configuração por usuário e deve ter permissões de leitura e gravação para o proprietário e não deve ser acessível por grupo e outros.

Por padrão, os arquivos no diretório ~/.ssh são criados com as permissões corretas definidas. Para verificar suas permissões, execute o seguinte comando em seu diretório inicial:

ls -l .ssh/ 

Se o ssh reclamar de permissões erradas em qualquer um dos arquivos acima, você poderá definir as permissões corretas para qualquer um dos arquivos assim:

chmod u+rw,go-rwx .ssh/id_rsa
chmod u+rw,go-rwx .ssh/id_rsa.pub
chmod u+rw,go-rwx .ssh/authorized_keys
chmod u+rw,go-rwx .ssh/known_hosts
chmod u+rw,go-rwx .ssh/config
OR
chmod 600 .ssh/id_rsa
chmod 600 .ssh/id_rsa.pub
chmod 600 .ssh/authorized_keys
chmod 600 .ssh/known_hosts
chmod 600 .ssh/config

Além disso, o diretório inicial de um usuário não deve ser gravável pelo grupo ou por outros, conforme mostrado na captura de tela a seguir.

ls -ld ~

Para remover permissões de gravação para grupos e outros no diretório inicial, execute este comando:

chmod go-w ~
OR
chmod 755 ~

Você também pode gostar de ler os seguintes artigos relacionados ao SSH:

  • Como proteger e fortalecer o servidor OpenSSH
  • 5 melhores práticas de segurança para servidores OpenSSH
  • Como configurar o login SSH sem senha no Linux [3 etapas fáceis]
  • Como bloquear ataques de força bruta SSH usando SSHGUARD
  • Como usar o Port Knocking para proteger o serviço SSH no Linux
  • Como alterar a porta SSH no Linux

Por enquanto é isso! Use a seção de comentários abaixo para fazer perguntas ou adicionar sua opinião a este tópico.