Comment résoudre les problèmes de connexion à mon instance Linux EC2 à l'aide d'une connexion SFTP ?

Dernière mise à jour : 04-05-2021

Je ne peux pas me connecter à mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) à l'aide d'une connexion SFTP (Secure File Transfer Protocol). Ou, je reçois l'erreur « remote readdir Permission denied ». Comment puis-je résoudre ce problème ?

Brève description

Il existe plusieurs raisons pour lesquelles la connexion à votre instance EC2 via une connexion SFTP peut échouer. Voici les étapes de dépannage pour les problèmes de connexion courants :

  • Vérifiez que votre instance répond aux conditions préalables de connexion SSH.
  • Connectez-vous à l'instance avec une messagerie détaillée pour identifier l'erreur.
  • Vérifiez les journaux d'authentification et de système à la recherche d'erreurs.
  • Vérifiez que le sous-système pour SFTP est configuré dans le fichier de configuration SSHD.
  • Corrigez l'erreur Remote readdir Permission denied.

Solution

Vérifiez que votre instance répond aux conditions préalables de connexion SSH

SFTP fonctionne sur SSH. Vérifiez que l'instance répond à toutes les conditions préalables de connexion SSH. Pour obtenir la liste des conditions préalables, reportez-vous à Connexion à votre instance Linux à l'aide de SSH.

Connectez-vous à l'instance avec une messagerie détaillée pour identifier l'erreur

Les messages d'erreur de connexion suivants sont courants :

  • Connection timed out ou Connection refused
  • Permission denied ou Authentication failed
  • Server refused our key

Pour des informations sur la connexion à votre instance avec la messagerie détaillée et sur la manière de résoudre ces problèmes et d'autres erreurs liées à SSH, consultez Comment résoudre les problèmes de connexion à mon instance Linux Amazon EC2 à l'aide de SSH ?

Si vous avez activé EC2 Serial Console, vous pouvez l'utiliser pour résoudre les problèmes liés aux types d'instance Nitro pris en charge. La console série vous aide à résoudre les problèmes de démarrage, de configuration réseau et de configuration SSH. La console série se connecte à votre instance sans qu'aucune connexion réseau ne soit nécessaire. Vous pouvez accéder à la console série à l'aide de la console Amazon EC2 ou de l'interface de ligne de commande AWS (AWS CLI).

Avant d'utiliser la console série, accordez-lui l'accès au niveau du compte. Créez ensuite des stratégies AWS Identity and Access Management (IAM) accordant l'accès à vos utilisateurs IAM. En outre, chaque instance qui utilise la console série doit inclure au moins un utilisateur avec mot de passe. Pour plus d'informations sur la configuration d'EC2 Serial Console, consultez Configurer l'accès à EC2 Serial Console.

Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Vérifiez les journaux d'authentification et de système à la recherche d'erreurs

Journal d'authentification RHEL et Fedora :

$ sudo less /var/log/secure

Journaux système génériques RHEL et Fedora :

$ sudo less /var/log/messages

Journal d'authentification Debian et Ubuntu :

$ sudo less /var/log/auth.log

Journaux système génériques Debian et Ubuntu :

$ sudo less /var/log/syslog

Vérifiez que le sous-système pour SFTP est configuré dans le fichier de configuration SSHD

Vérifiez que le sous-système pour SFTP est configuré dans le fichier de configuration SSHD et que le fichier d'objet partagé pour sftp-server existe dans le répertoire respectif. Si la connexion SFTP se ferme en raison d'un sous-système SFTP manquant, le journal peut alors indiquer l'erreur demande de sous-système a échoué sur le canal 0.

Distributions basées sur RHEL et 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

Distributions basées sur Debian et 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

Pour plus d'informations, consultez la section Sous-système de sshd_config sur la page de manuel Linux.

Résoudre l'erreur remote readdir Permission denied

L'erreur remote readdir Permission denied indique que l'utilisateur qui tente la connexion SFTP ne dispose pas des autorisations correctes. L'utilisateur doit au minimum disposer de l'autorisation de lecture et d'exécution pour basculer vers un répertoire cible.

Utilisez la commande suivante pour vérifier que l'utilisateur est autorisé à accéder au répertoire cible :

ls -ldZ /directory

Utilisez la commande suivante pour vérifier les autorisations de liste de contrôle d'accès (ACL) limitant l'accès utilisateur :

getfacl /directory

Utilisez la commande suivante pour vérifier que SELinux est activé :

getenforce

Si SELinux est activé, vérifiez /var/log/audit/audit.log ou /var/log/audit.log pour les erreurs d'autorisation refusées en fonction du contexte SELinux.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?