Não consigo me conectar à minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) usando uma conexão Secure File Transfer Protocol (SFTP). Ou Estou recebendo o erro “permissão negada de readdir remoto”. Como posso solucionar isso?
Breve descrição
Há vários motivos pelos quais a conexão com sua instância do EC2 por meio de uma conexão SFTP pode falhar. Estas são as etapas de solução de problemas comuns de conexão:
- Verifique se sua instância atende aos pré-requisitos de conexão SSH.
- Faça login na instância com mensagens detalhadas ativadas para identificar o erro.
- Examine os logs de autenticação e do sistema em busca de erros.
- Verifique se o arquivo de configuração SSHD tem o Subsistema para SFTP configurado.
- Resolver um erro de Permissão negada de readdir remoto.
Resolução
Verifique se sua instância atende aos pré-requisitos de conexão SSH
O SFTP funciona em cima do SSH. Verifique se a instância atende a todos os pré-requisitos de conexão SSH. Para ver uma lista de pré-requisitos, consulte Conectar-se à sua instância do Linux usando SSH.
Faça login na instância com mensagens detalhadas ativadas para identificar o erro
Estas são mensagens de erro de conexão comuns:
- Tempo limite da conexão ou Conexão recusada
- Permissão negada ou Falha na autenticação
- O servidor recusou nossa chave
Para informações sobre como fazer login em sua instância com mensagens detalhadas ativadas e como resolver esses e outros erros relacionados à conexão SSH, consulte Como solucionar problemas de conexão com minha instância do Linux do Amazon EC2 usando SSH?
Se você habilitou o Console de Série do EC2, poderá usá-lo para solucionar os tipos de instâncias baseados em Nitro compatíveis. O console serial ajuda você a solucionar problemas de inicialização, configuração de rede e problemas de configuração SSH. O console serial se conecta à sua instância sem a necessidade de uma conexão de rede ativa. Você pode acessar o console serial usando o console do Amazon EC2 ou a AWS Command Line Interface (AWS CLI).
Antes de usar o console serial, conceda acesso a ele no nível da conta. Crie políticas do AWS Identity and Access Management (IAM) que concedam acesso aos seus usuários do IAM. Além disso, todas as instâncias que usam o console serial devem incluir pelo menos um usuário baseado em senha. Para informações sobre como configurar o Console de Série do EC2 para Linux, consulte Configurar o acesso ao Console de Série do EC2.
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.
Revise os logs de autenticação e do sistema em busca de erros
Log de autenticação RHEL e Fedora:
$ sudo less /var/log/secure
Logs genéricos do sistema RHEL e Fedora:
$ sudo less /var/log/messages
Log de autenticação do Debian e do Ubuntu:
$ sudo less /var/log/auth.log
Log genéricos do sistema do Debian e Ubuntu:
$ sudo less /var/log/syslog
Verifique se o arquivo de configuração SSHD tem o Subsistema para SFTP configurado
Verifique se o arquivo de configuração SSHD tem o subsistema para SFTP configurado e se o arquivo de objeto compartilhado para sftp-server existe no respectivo diretório. Se a conexão SFTP for fechada devido à falta de um subsistema SFTP, o log poderá mostrar que uma solicitação de subsistema falhou no erro do canal 0.
Distribuições baseadas em RHEL e Fedora:
$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
$ sudo ls -l /usr/libexec/openssh/sftp-server
-rwxr-xr-x. 1 root root 100784 Jun 26 2019 /usr/libexec/openssh/sftp-server
Distribuições baseadas em Debian e Ubuntu:
$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server
$ sudo ls -l /usr/lib/openssh/sftp-server
-rwxr-xr-x 1 root root 105608 Mar 4 2019 /usr/lib/openssh/sftp-server
Para mais informações, consulte a seção Subsistema em sshd_config na página principal do Linux.
Resolver um erro de Permissão negada de readdir remoto
O erro Permissão negada de readdir remoto indica que o usuário que está tentando a conexão SFTP não tem as permissões corretas. O usuário deve, no mínimo, ter permissão de leitura e execução para mudar para um diretório de destino.
Use o comando a seguir para verificar se o usuário tem permissão para acessar o diretório de destino:
ls -ldZ /directory
Use o comando a seguir para verificar as permissões da lista de controle de acesso (ACL) que restringem o acesso do usuário:
getfacl /directory
Use o comando a seguir para verificar se o SELinux está habilitado:
getenforce
Se o SELinux estiver habilitado, revise /var/log/audit/audit.log ou /var/log/audit.log para ver se há erros de permissão negada com base no contexto do SELinux.