GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible d'établir une connexion à l'aide de ssh2_connect() en PHP

J'ai utilisé le ssh2_connect() fonction pour établir une connexion à un serveur SSH distant. Mais cela fonctionne sur un serveur Web et échoue sur un autre (appelons-le Webserver1 et Webserver 2 ci-après). J'obtiens cette erreur - unable to establish connection error sur le serveur Web2. Les serveurs Web 1 et 2 sont des configurations identiques exécutant Apache et ce qui est étrange, c'est que le problème ne s'est produit qu'après le redémarrage du serveur Web2. Le error_log apache complet de webserver2 est la suivante :

[Wed Dec 15 10:30:35 2021] [error] [client 192.168.xxx.xx] PHP Warning:  ssh2_connect(): Unable to connect to 192.168.xx.xxx on port 22 in /var/www/html/process.php on line 9
[Wed Dec 15 10:30:35 2021] [error] [client 192.168.xxx.xx] PHP Warning:  ssh2_connect(): Unable to connect to 192.168.xx.xxx in /var/www/html/process.php on line 9

Ci-dessous le script PHP :

if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
     if(!($con = ssh2_connect(REMOTE_IP, 22))){
           echo "fail: unable to establish connection\n";
     } else  {
          // try to authenticate with username root, password secretpassword
          if(!ssh2_auth_password($con, $username, $password)) {
                 echo "fail: unable to authenticate\n";
                 header('Location: ../../login/?error=1');
                 exit();
           } else {
                 echo "Logged in..\n";
           }
     }

Comment résoudre ssh_connect() :impossible d'établir la connexion

Étape 1 : Vérifiez le pare-feu sur le serveur distant. Une règle de pare-feu bloque peut-être les connexions du serveur Web 2.

Étape 2 : Testons le SSH depuis le terminal de webserver2 comme ci-dessous :

# ssh <username>@<REMOTE_IP> -p 22

Étape 3 : Si la commande SSH ci-dessus fonctionne, vérifiez si SELinux est activé. S'il est activé, assurez-vous de contourner SELinux pour les répertoires Web car il pourrait être bloquant.

Étape 4 : Par défaut, SELinux empêche le serveur Web Apache d'établir des connexions réseau.

Ne désactivez pas SELinux !

Sur CentOS 7, SELinux est activé par défaut. SELinux améliore la sécurité du serveur en restreignant et en définissant la manière dont un serveur traite les requêtes et les utilisateurs interagissent avec les sockets, les ports réseau et les répertoires essentiels. Il n'est pas recommandé de désactiver SELinux pour des raisons de sécurité, car vous risqueriez de compromettre l'ensemble du système.

Exécutez la commande ci-dessous pour autoriser les scripts et modules HTTPD à se connecter au réseau à l'aide de n'importe quel port TCP.

#  /usr/sbin/setsebool -P httpd_can_network_connect 1

C'est tout !


Linux
  1. Dépanner WordPress refusant une connexion FTP

  2. PuTTY :relooking extrême à l'aide du gestionnaire de connexion PuTTY

  3. Comment décompresser des fichiers via une connexion FTP ?

  4. Impossible d'ajouter un utilisateur à l'aide de useradd

  5. Nginx ne démarre pas avec systemctl

Établir une connexion SSH entre Windows et Linux

Créer une base de données et une table MySQL à l'aide de PHP dans XAMPP

Configurer la connexion à la base de données à l'aide de la variable d'environnement dans les rails

Correction :Impossible d'établir une connexion FTP avec un serveur SFTP dans FileZilla

Comment se connecter à MySQL en utilisant PHP

Utiliser WGET pour exécuter un cronjob PHP