Avant de commencer la mise à niveau, il est crucial de vérifier la version actuelle du système, d'OpenSSH et d'OpenSSL. ### Vérification des versions
Identifiez la version de votre système d'exploitation CentOS :
cat /etc/redhat-release
Vérifiez la version d'OpenSSH installée :
ssh -V
Vérifiez la version d'OpenSSL :
openssl version
Téléchargement des paquets
Les sources d'OpenSSH sont disponibles sur openssh.com, et celles d'OpenSSL sur openssl.org.
Installation des dépendances
Avant de compiler et d'installer les nouveaux paquets, assurez-vous que toutes les dépendances nécessaires sont présentes. ### Mise à jour des miroirs Yum
Il est recommandé d'utiliser des miroirs à jour pour garantir l'accès aux derniers paquets. Si wget n'est pas installé, installez-le d'abord :
yum install wget -y
Naviguez jusqu'au répertoire de configuration des dépôts Yum et sauvegardez le fichier de configuration actuel :
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
Téléchargez un fichier de configuration de miroir récent (par exemple, d'Aliyun) :
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
Nettoyez et régénérez le cache Yum :
yum clean all
yum makecache
Configuraton d'un accès de secours (Telnet)
Pour éviter toute interruption de connexion SSH pendant la mise à niveau, configurez Telnet comme solution de secours. Installez les paquets nécessaires :
yum install -y telnet telnet-server xinetd
Démarrez et activez les services Telnet :
systemctl start xinetd && systemctl start telnet.socket
Ouvrez le port 23 dans le pare-feu :
firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --complete-reload
Vérifiez que le port est ouvert :
firewall-cmd --query-port=23/tcp
Autorisez la connexion Telnet en modifiant le fichier PAM :
sed -i 's/^auth\[\[:space:\]\]\\+required\[\[:space:\]\]\\+pam\_securetty.so/#&/' /etc/pam.d/remote
Testez la connexion Telnet :
telnet <adresse_ip_du_serveur></adresse_ip_du_serveur>
Configurez Telnet pour qu'il démarre au lancement :
systemctl enable telnet.socket
Une fois Telnet fonctionnel, effectuez les étapes de mise à niveau via une session Telnet.
Installation des outils de compilation et des bibliothèques
Assurez-vous que les outils de développement essentiels sont installés :
yum install -y gcc gcc-c++ make autoconf openssl openssl-devel pam-devel
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y perl-IPC-Cmd perl-CPAN
Mise à niveau d'OpenSSL
Décompression et configuration
Placez le fichier source d'OpenSSL téléchargé dans un répertoire approprié, par exemple /usr/local/src. Décompressez l'archive :
cd /usr/local/
tar -zxvf openssl-X.Y.Z.tar.gz
Naviguez dans le répertoire décompressé :
cd openssl-X.Y.Z/
Configurez la compilation en spécifiant le répertoire d'installation et en activant la génération de bibliothèques partagées :
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -d shared
Compilation et installation
Compilez et installez OpenSSL :
make && make install
Sauvegarde et liaison des fichiers OpenSSL
Sauvegardez les binaires et bibliothèques OpenSSL existants :
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
Créez des liens symboliques vers la nouvelle installation :
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
ln -sf /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
Mettez à jour le cache du lieur dynamique :
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
Vérification de la version d'OpenSSL
Confirmez que la nouvelle version est active :
openssl version
Mise à niveau d'OpenSSH
Désinstallation de la version existante
Arrêtez le service SSH :
service sshd stop
Désinstallez OpenSSH via RPM, en ignorant les dépendances pour assurer une désinstallation complète :
rpm -e `rpm -qa | grep openssh` --nodeps
Sauvegardez le répertoire de configuration SSH et supprimez son contenu :
cp -r /etc/ssh/ /etc/ssh_bak
rm -rf /etc/ssh/*
Décompression et configuration
Placez le fichier source d'OpenSSH téléchargé dans /usr/local/src et décompressez-le :
cd /usr/local/
tar -xzvf openssh-X.Y.Z.tar.gz
chown -R root:root openssh-X.Y.Z
Accédez au répertoire décompressé :
cd openssh-X.Y.Z/
Configurez la compilation en spécifiant les chemins pour l'installation, la configuration, et les dépendances OpenSSL et Zlib :
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --without-openssl-header-check --with-pam --with-privsep-path=/var/lib/sshd --with-md5-passwords --with-zlib=/usr/local/src/zlib
Compilation et installation
Compilez et installez OpenSSH :
make -j $(nproc) && make install
Configuration du service et des liens
Copiez le script d'initialisation d'OpenSSH dans /etc/init.d/ et renommez-le en sshd :
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
Copiez les binaires et outils OpenSSH vers les emplacements système standard :
cp -rf sbin/sshd /usr/sbin/sshd
cp -rf bin/ssh /usr/bin/ssh
cp -rf bin/ssh-keygen /usr/bin/ssh-keygen
Configuration de SSH et redémarrage
Activez la connexion root et l'authentification par mot de passe si nécessaire dans le fichier de configuration SSH :
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
Redémarrez le service SSH :
/etc/init.d/sshd restart
Vérifiez le statut du service SSH :
/etc/init.d/sshd status
Ajoutez le service SSH au démarrage automatique du système :
chkconfig --add sshd
chkconfig sshd on
Vérification de la version d'OpenSSH
Confirmez la version mise à jour d'OpenSSH :
ssh -V
Résolution des problèmes courants
Erreur zlib.h manquante
Si la compilation échoue avec un message indiquant que zlib.h est manquant, téléchargez et installez la bibliothèque zlib depuis sa source officielle. Décompressez-la dans /usr/local/src et suivez les instructions de compilation pour zlib.
Permissions des clés d'hôte incorrectes
Si le service SSH ne démarre pas en raison de permissions incorrectes sur les fichiers de clés d'hôte (par exemple, ssh_host_rsa_key), corrigez les permissions pour restreindre l'accès :
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
Après avoir corrigé les permissions, redémarrez le service SSH.