GNU/Linux >> Linux Esercitazione >  >> Linux

Impossibile stabilire la connessione utilizzando ssh2_connect() in PHP

Ho usato ssh2_connect() funzione per stabilire una connessione a un server SSH remoto. Ma funziona su un server web e fallisce su un altro (chiamiamolo come webserver1 e webserver 2 di seguito). Ottengo questo errore:unable to establish connection error sul server web2. Entrambi i server web 1 e 2 sono configurazioni identiche che eseguono Apache e la cosa strana è che il problema si è verificato solo dopo il riavvio del server web2. L'apache completo error_log di webserver2 è il seguente:

[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

Di seguito è riportato lo 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";
           }
     }

Come risolvere ssh_connect() :impossibile stabilire una connessione

Passaggio 1: Verificare la presenza del firewall sul server remoto. Una regola del firewall potrebbe bloccare le connessioni dal server web2.

Passaggio 2: Testiamo l'SSH dal terminale di webserver2 come di seguito:

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

Passaggio 3: Se il comando SSH sopra funziona, controlla se SELinux è abilitato. Se abilitato, assicurati di bypassare SELinux per le directory web in quanto potrebbe bloccarsi.

Passaggio 4: Per impostazione predefinita, SELinux impedisce al server Web Apache di stabilire connessioni di rete.

Non disabilitare SELinux!

Su CentOS 7, SELinux è abilitato per impostazione predefinita. SELinux migliora la sicurezza del server limitando e definendo il modo in cui un server elabora le richieste e gli utenti interagiscono con socket, porte di rete e directory essenziali. Si sconsiglia di disabilitare SELinux per motivi di sicurezza, poiché consentirete la compromissione dell'intero sistema.

Esegui il comando seguente per consentire agli script e ai moduli HTTPD di connettersi alla rete utilizzando qualsiasi porta TCP.

#  /usr/sbin/setsebool -P httpd_can_network_connect 1

Questo è tutto!


Linux
  1. Come controllare la velocità della tua connessione ssh

  2. Bash + Utilizzo di Printf per stampare in un formato speciale?

  3. Utilizzo di installazioni PHP alternative

  4. PuTTY:Extreme Makeover utilizzando PuTTY Connection Manager

  5. Come configurare Nginx per eseguire PHP utilizzando PHP-FPM

Stabilire una connessione SSH tra Windows e Linux

Crea database e tabelle MySQL usando PHP in XAMPP

Configura la connessione al database utilizzando la variabile di ambiente in Rails

Correzione:impossibile stabilire una connessione FTP a un server SFTP in FileZilla

Come connettersi a MySQL usando PHP

Impossibile aggiungere l'utente utilizzando useradd