Description du problème
Le service SSH ne parvient pas à démarrer. Un message d'erreur indique que la bibliothèque partagée libcrypto.so.1.1 est manquante.
error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory.
Cause
Le service SSH et ses modules d'authentification chargent dynamiquement la bibliothèque partagée libcrypto.so.1.1 lors de l'exécution. Cette erreur survient si le fichier de bibliothèque ou sa cible de lien symbolique est manquant, déplacé ou corrompu. Sans cette dépendance, le service SSH ne peut pas démarrer.
Solutions
Si un snapshot précédent du disque système est disponible, commencez par créer un nouveau snapshot pour sauvegarder vos données actuelles. Ensuite, restaurez le disque système à partir du snapshot précédent et vérifiez que le service SSH démarre correctement.
En l'absence de snapshot précédent, vous avez besoin d'une instance Elastic Compute Service (ECS) saine, exécutant le même système d'exploitation et située dans la même zone que l'instance problématique. Vous pouvez restaurer le fichier de bibliothèque manquant en attachant le disque système de l'instance problématique à l'instance saine.
Étape 1 : Détacher le disque système
Assurez-vous que l'instance problématique est à l'état Stopped, puis effectuez les étapes suivantes :
Pour éviter toute perte de données, créez un snapshot du disque système.
Accédez à Console ECS - Instances. Dans le coin supérieur gauche, sélectionnez la région et le groupe de ressources de l'instance cible.
Cliquez sur l'ID de l'instance problématique pour ouvrir la page Instance Details, puis cliquez sur l'onglet Block Storage.
Dans la colonne Actions du System Disk, choisissez .
Dans la boîte de dialogue Detach Disk, confirmez les détails et cliquez sur OK. Le détachement du disque est réussi lorsque l'état de l'instance passe à No System Disk.
Étape 2 : Attacher le disque à une instance saine en tant que disque de données
Assurez-vous que l'instance saine est à l'état Running, puis effectuez les étapes suivantes :
-
Attachez le disque système de l'instance problématique à l'instance saine.
Cliquez sur l'ID de l'instance saine pour ouvrir sa page de détails.
Cliquez sur l'onglet Block Storage, puis cliquez sur Attach Disk.
Sur la page Attach to Instance, sélectionnez le disque système détaché dans la section Disk, puis cliquez sur Next.
Sur la page Partition Disk and Create and Mount File Systems, sélectionnez Configure Later.
Cliquez sur Connect, puis choisissez Workbench. Connectez-vous à l'instance comme indiqué pour ouvrir le terminal.
-
Montez le système de fichiers.
-
Identifiez le nom de la partition du disque problématique.
sudo lsblk -fvda ├─vda1 ├─vda2 vfat 7938-FA03 /boot/efi └─vda3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 / vdb ├─vdb1 ├─vdb2 vfat 7938-FA03 └─vdb3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78Dans cet exemple,
vdbest le disque problématique etvdb3est la partition racine à monter. Les partitions sont les suivantes :vdb1/vdb2: Contiennent les fichiers de démarrage du système. Vous pouvez les ignorer.vdb3: Contient les fichiers du système d'exploitation et les données. Cette partition doit être montée.
-
Créez un répertoire et montez le système de fichiers.
sudo mkdir <mount_directory> && sudo mount /dev/<partition_name> <mount_directory>Paramètre
Description
<partition_name>Le nom de la partition racine du disque problématique que vous avez identifié à l'étape précédente.
<mount_directory>Un chemin de répertoire personnalisé et vide commençant par
/.ImportantLe montage du système de fichiers sur un répertoire non vide rend les fichiers originaux de ce répertoire inaccessibles.
Par exemple, pour monter la partition cible
vdb3dans un nouveau répertoire nommé/test, exécutezsudo mkdir /test && sudo mount /dev/vdb3 /test. -
Vérifiez que le système de fichiers est monté.
Exécutez la commande
sudo lsblk. Si un répertoire de montage (MOUNTPOINT) apparaît pour la partition cible, le système de fichiers est monté.
-
Étape 3 : Réparer le fichier libcrypto.so.1.1
Cette rubrique utilise Alibaba Cloud Linux 3.2104 comme exemple. Sur l'instance saine, réparez le fichier de bibliothèque partagée dans le chemin monté.
-
Recherchez le chemin vers
libcrypto.so.1.1.Le nom du fichier de bibliothèque peut varier selon le système d'exploitation. Recherchez le nom de fichier qui apparaît dans votre message d'erreur spécifique.
sudo find / -name libcrypto.so.1.1Exemple de sortie :
/usr/lib64/libcrypto.so.1.1La sortie d'exemple confirme que le fichier de bibliothèque se trouve dans le répertoire
/usr/lib64/. -
Vérifiez la cible du lien symbolique.
ll /usr/lib64/libcrypto.so.1.1Exemple de sortie :
lrwxrwxrwx. 1 root root 19 Nov 20 2024 /usr/lib64/libcrypto.so.1.1 -> libcrypto.so.1.1.1kCet exemple montre que
libcrypto.so.1.1est un lien symbolique pointant vers le fichierlibcrypto.so.1.1.1k. Par conséquent, copiez le fichier sainlibcrypto.so.1.1.1kvers le même chemin sur le disque problématique. -
Restaurez le fichier de bibliothèque.
Remplacez
<mount_directory>par le répertoire de montage réel que vous avez créé.sudo cp /usr/lib64/libcrypto.so.1.1.1k <mount_directory>/usr/lib64/Selon l'exemple, vous devez exécuter
sudo cp /usr/lib64/libcrypto.so.1.1.1k /test/usr/lib64/. -
Définissez les autorisations correctes et recréez le lien symbolique.
-
Définissez les autorisations et la propriété du fichier.
Remplacez
<mount_directory>par le répertoire de montage réel.# Set permissions to rwxr-xr-x sudo chmod 755 <mount_directory>/usr/lib64/libcrypto.so.1.1.1k # Set owner and group to root sudo chown root:root <mount_directory>/usr/lib64/libcrypto.so.1.1.1kSelon l'exemple, vous devez exécuter
sudo chmod 755 /test/usr/lib64/libcrypto.so.1.1.1ketsudo chown root:root /test/usr/lib64/libcrypto.so.1.1.1k. -
Recréez le lien symbolique.
sudo ln -sf /usr/lib64/libcrypto.so.1.1.1k <mount_directory>/usr/lib64/libcrypto.so.1.1Selon l'exemple, vous devez exécuter
sudo ln -sf /usr/lib64/libcrypto.so.1.1.1k /test/usr/lib64/libcrypto.so.1.1.
-
Étape 4 : Rattacher le disque à l'instance problématique en tant que disque système
-
Démontez le système de fichiers.
Remplacez
<mount_directory>par le répertoire de montage réel.sudo umount <mount_directory>Selon l'exemple, vous devez exécuter
sudo umount /test. -
Détachez le disque système réparé.
Revenez à la console ECS et accédez à la page de détails de l'instance saine. Cliquez sur Block Storage .
Dans la colonne Actions du disque système réparé, cliquez sur Detach .
Dans la boîte de dialogue Detach Disk , cliquez sur OK .
-
Rattachez le disque système réparé à l'instance d'origine.
Accédez à la page de détails de l'instance problématique, cliquez sur l'onglet Block Storage , puis cliquez sur Attach Disk .
Sur la page Attach to Instance , sélectionnez le disque système réparé comme Disk , configurez les Logon Credentials , puis cliquez sur Next .
Sur la page Partition Disk and Create and Mount File Systems , sélectionnez Configure Later .
Démarrez l'instance ECS.
Étape 5 : Vérifier les résultats
Connectez-vous à l'instance ECS problématique et redémarrez le service SSH pour vérifier qu'il fonctionne correctement.
Pour arrêter la facturation, vous pouvez libérer l'instance saine après avoir confirmé la restauration du service.
Recommandations
Manipulez les fichiers système critiques avec prudence : Avant de supprimer, déplacer ou modifier des fichiers système critiques, créez toujours un snapshot pour sauvegarder vos données. Ne supprimez pas les fichiers système que vous ne connaissez pas bien.
Utilisez des méthodes d'installation logicielle standard : Utilisez toujours le gestionnaire de paquets natif du système, tel que
yumouapt, pour installer ou désinstaller des logiciels. Cela garantit la gestion automatique des dépendances et aide à prévenir les dommages aux bibliothèques partagées.
> Detach