Pourquoi est-ce que je reçois les erreurs UPSTREAM_ERROR, UPSTREAM_NOT_FOUND ou CLIENT_UNAUTHORIZED lorsque j'accède à mon instance Lightsail à l'aide de la console SSH basée sur un navigateur ?

Lecture de 8 minute(s)
0

Je reçois un message UPSTREAM_ERROR [515], UPSTREAM_NOT_FOUND [519], ou CLIENT_UNAUTHORIZED [769] lorsque je me connecte à mon instance Amazon Lightsail à l'aide de la console SSH basée sur un navigateur. Comment résoudre ces erreurs ?

Brève description

Si vous recevez un message d'erreur lorsque vous vous connectez à votre instance Lightsail et que l'erreur est liée à SSH, l'un des messages suivants peut s'afficher :

  • « Votre instance a rencontré une erreur et a fermé la connexion. Réessayez ou contactez le support client. UPSTREAM_ERROR [515] »
  • « Une erreur s'est produite et nous n'avons pas pu nous connecter ou rester connectés à votre instance. Si cette instance vient de démarrer, réessayez dans une minute ou deux. UPSTREAM_NOT_FOUND [519] »
  • « La connexion a échoué. Si cette instance vient de démarrer, réessayez dans une minute ou deux. CLIENT_UNAUTHORIZED [769] »

Les erreurs UPSTREAM_ERROR [515] et UPSTREAM_NOT_FOUND [519] indiquent que votre instance Lightsail n'est pas accessible lorsque vous utilisez SSH. Les causes courantes de ces erreurs sont les suivantes :

  • Les échecs de démarrage de l'instance, les échecs de vérification de l'état de l'instance ou la surutilisation des ressources sur l'instance.
  • Un pare-feu de niveau OS bloque l'accès au port SSH.
  • Le port SSH par défaut (22) est remplacé par un port différent.
  • Le service SSH est en panne.

L'erreur CLIENT_UNAUTHORIZED [769] indique qu'il y a un problème d'authentification SSH dans votre instance Lightsail. Les raisons courantes de cette erreur sont les suivantes :

  • Mauvaises configurations de la clé système Lightsail dans /etc/ssh/lightsail_instance_ca.pub.
  • Vous avez mis à niveau votre instance Ubuntu depuis une version antérieure vers la version 20.04 ou ultérieure.

Solution

Échecs de démarrage de l'instance, échecs de vérification de l'état de l'instance ou surutilisation des ressources sur l'instance

Affichez les métriques de vérification du statut de votre instance afin de déterminer si la vérification du statut du système ou de l'instance a échoué.

Vérification de l'état du système

Si la vérification de l'état du système a échoué, le matériel sous-jacent de l'instance est défectueux. Pour résoudre le problème, arrêtez puis démarrez l'instance. Cette opération permet de migrer l'instance vers du matériel sain.

Avertissement : N'oubliez pas que l'adresse IP publique de l'instance change à chaque arrêt et début de l'instance. Si vous souhaitez que l'adresse IP reste la même à chaque arrêt et début de l'instance, attachez une adresse IP statique.

Vérification de l'état de l'instance

Si la vérification de l'état de l'instance a échoué, des problèmes au niveau du système d'exploitation peuvent entraîner des erreurs de démarrage. Sinon, les ressources de l'instance, telles que le processeur ou la mémoire, peuvent être surexploitées. Pour les étapes de résolution, consultez Comment puis-je résoudre les problèmes courants entraînant le non-fonctionnement de mon instance Lightsail ?

Un pare-feu de niveau OS bloque l'accès au port SSH

L'accès SSH basé sur un navigateur utilise l'adresse IP interne d'Amazon pour se connecter à votre instance Lightsail. Certains pare-feux et fichiers de contrôle d'accès au niveau du système d'exploitation autorisent l'accès SSH à un seul ensemble d'adresses IP et interdisent tous les autres. Dans ce cas, vous recevez l'erreur UPSTREAM_NOT_FOUND [519] ou UPSTREAM_ERROR [515]. Le même problème se produit si un pare-feu bloque complètement l'accès SSH.

Remarque : Parmi les pare-feux au niveau du système d'exploitation, citons Iptables et UFW, tandis que /etc/hosts.deny (contrôle d'accès aux hôtes dans les instances basées sur cPanel) est un exemple de fichier de contrôle.

Pour résoudre ce problème, effectuez l'une des opérations suivantes :

  • Si l'accès SSH à l'instance à l'aide du terminal ou de l'application PuTTY fonctionne, connectez-vous à l'instance et supprimez les règles de refus du pare-feu et du fichier /etc/hosts.deny.
  • Si vous disposez d'une instance cPanel, accédez à la console WHM pour supprimer les règles de pare-feu.
  • Si vous ne parvenez pas à vous connecter à l'instance en utilisant SSH depuis le terminal ou l'application PuTTY, désactivez le pare-feu à l'aide d'un script de lancement. Le script de lancement ne peut être ajouté que lors du lancement d'une instance. Pour utiliser un script de lancement afin de désactiver les pare-feu au niveau du système d'exploitation, Iptables et UFW, procédez comme suit :

1.    Ouvrez la console Amazon Lightsail.

2.    Créez un instantané manuel de l'instance.

3.    Sous l'onglet Instantanés, sous Instantanés manuels, sélectionnez les trois points en regard du nouvel instantané.

4.    Sélectionnez Créer une nouvelle instance.

5.    Sélectionnez la même zone de disponibilité que l'instance précédente.

6.    Sélectionnez Ajouter un script de lancement, puis ajoutez le script suivant.

Remarque : L'exemple suivant désactive le pare-feu UFW, supprime toutes les chaînes iptable ou règles de pare-feu, et désactive le fichier /etc/hosts.deny en le renommant.

sudo ufw disable
sudo iptables -F
sudo mv /etc/hosts.deny /etc/hosts.deny_backup
sudo touch /etc/hosts.deny
sudo systemctl enable sshd
sudo systemctl restart sshd

7.    Choisissez un nouveau plan d'instance ou utilisez le même plan que l'instance précédente.

8.    Entrez le nom de l'instance, puis sélectionnez Créer une instance.

Une fois que la nouvelle instance commence à s'exécuter, attendez 10 à 15 minutes, puis essayez de vous y connecter à l'aide de la console SSH basée sur un navigateur.

Remarque : si l'instance précédente avait une adresse IP statique, vous pouvez l'utiliser sur la nouvelle instance. Détachez l'adresse IP statique, puis attachez-la à la nouvelle instance à partir de l'onglet Networking (Réseaux). Pour plus d'informations, consultez Adresses IP statiques dans Amazon Lightsail.

Le service SSH est en arrêté

Si le service SSH n'est pas en cours d'exécution ou n'est pas actif sur l'instance, la connexion SSH échoue et vous recevez l'erreur UPSTREAM_NOT_FOUND [519]. Pour résoudre ce problème, configurez le service AWS Systems Manager Session Manager pour votre instance Lightsail. Après avoir configuré le Gestionnaire de session, accédez à l'instance sans le service SSH, puis corrigez le problème SSH.

Les étapes de dépannage de base pour les problèmes SSH sont les suivantes :

  • Consultez les journaux d'authentification SSH dans le fichier /var/log/auth.log ou /var/log/secure, en fonction de la distribution du système d'exploitation, pour identifier les erreurs.
  • Testez la syntaxe du fichier de configuration SSH, puis corrigez les erreurs éventuelles.
sudo sshd -t
sudo systemctl restart sshd

Mauvaises configurations de la clé système Lightsail /etc/ssh/lightsail_instance_ca.pub

Lightsail utilise la clé système /etc/ssh/lightsail_instance_ca.pub pour activer l'accès SSH basé sur un navigateur. Si ce fichier est manquant, l'authentification SSH échoue et vous recevez l'erreur CLIENT_UNAUTHORIZED [769]. La même erreur se produit lorsque la clé système Lightsail n'est pas spécifiée dans le paramètre TrustedUserCAKeys du fichier de configuration SSH /etc/ssh/sshd_config.

Si la connexion SSH à l'instance via le terminal ou l'application PuTTY fonctionne, connectez-vous à l'instance et confirmez que le fichier /etc/ssh/sshd_config existe et qu'il contient la clé ssh-rsa.

Si le fichier est manquant, recréez-le en suivant les étapes suivantes :

1.    Exécutez la commande suivante et vérifiez que vous obtenez la clé ssh-rsa dans la sortie de la commande :

sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa

2.    Si la commande renvoie la clé ssh-rsa dans la sortie, exécutez les commandes suivantes pour la copier dans /etc/ssh/lightsail_instance_ca.pub :

sudo sh -c "cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa > /etc/ssh/lightsail_instance_ca.pub"
    sudo sh -c "echo >> /etc/ssh/sshd_config" 
    sudo sh -c "echo 'TrustedUserCAKeys /etc/ssh/lightsail_instance_ca.pub' >> /etc/ssh/sshd_config"
    sudo systemctl restart sshd

3.    Si vous n'obtenez pas de clé ssh-rsa à l'étape 1, ou si vous ne pouvez pas utiliser SSH vers l'instance à l'aide du terminal ou de l'application PuTTY, créez un instantané manuel de l'instance et lancez une nouvelle instance avec cet instantané. La clé système Lightsail est ajoutée automatiquement au serveur lors du lancement de l'instance.

Vous avez effectué une mise à niveau depuis une ancienne version d'Ubuntu vers la version 20.04 ou ultérieure

Pour les instances exécutant Ubuntu 20.04 ou version ultérieure, vous devez autoriser les autorités de certification (CA) à utiliser l'algorithme ssh-rsa pour signer des certificats. Sinon, l'authentification échoue et vous recevez l'erreur CLIENT_UNAUTHORIZED [769]. Les autorités de certification sont autorisées à utiliser l'algorithme ssh-rsa par défaut dans les instances Ubuntu 20.04. Toutefois, si vous mettez à niveau votre ancienne version d'Ubuntu vers la version 20.04, vous devez autoriser manuellement les autorités de certification. Pour ce faire, procédez selon les étapes suivantes :

1.    Connectez-vous à l'instance à l'aide d'un client SSH tel que le terminal ou l'application PuTTY.

2.    Ouvrez le fichier de configuration SSH (/etc/ssh/sshd_config).

3.    Ajoutez des paramètres CA au fichier, en fonction de votre version d'Ubuntu :

       Si la version du système d'exploitation est mise à niveau vers Ubuntu 20.04 : entrez manuellement la ligne de paramètre CASignatureAlgorithms dans le fichier sshd_config :

$ sudo vi /etc/ssh/sshd_config
$ cat /etc/ssh/sshd_config | egrep "CASignature"
CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

       Si la version du système d'exploitation est mise à niveau vers Ubuntu 22.04 : entrez manuellement les lignes de paramètres CASignatureAlgorithms et PubkeyAcceptedAlgorithms dans le fichier sshd_config :

$ sudo vi /etc/ssh/sshd_config
$ cat /etc/ssh/sshd_config | egrep "CASignature|PubkeyAccepted"
CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa-cert-v01@openssh.com,ssh-rsa

4.    Exécutez la commande suivante pour valider le contenu du fichier de configuration sshd :

$ sudo sshd -T
  1.    Exécutez la commande suivante pour redémarrer le service sshd :
$ sudo systemctl restart sshd

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an