GNU/Linux >> Belajar Linux >  >> Linux

Tidak dapat membuat koneksi menggunakan ssh2_connect() di PHP

Saya telah menggunakan ssh2_connect() berfungsi untuk membuat koneksi ke server SSH jarak jauh. Tetapi ini berfungsi di satu server web dan gagal di yang lain (sebut saja sebagai webserver1 dan webserver 2 selanjutnya). Saya mendapatkan kesalahan ini – unable to establish connection error di server web2. Baik server web 1 &2 adalah pengaturan identik yang menjalankan Apache dan yang aneh adalah bahwa masalah hanya terjadi setelah reboot server web2. error_log apache lengkap dari webserver2 adalah sebagai berikut:

[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 bawah ini adalah 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";
           }
     }

Cara mengatasi ssh_connect() :tidak dapat membuat koneksi

Langkah 1: Periksa firewall di server jauh. Aturan firewall mungkin memblokir koneksi dari server web2.

Langkah 2: Mari kita uji SSH dari terminal webserver2 seperti di bawah ini:

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

Langkah 3: Jika perintah SSH di atas berfungsi, maka periksa apakah SELinux diaktifkan. Jika diaktifkan, pastikan untuk melewati SELinux untuk direktori web karena mungkin memblokir.

Langkah 4: Secara default, SELinux mencegah server web Apache membangun koneksi jaringan.

Jangan nonaktifkan SELinux!

Pada CentOS 7, SELinux diaktifkan secara default. SELinux meningkatkan keamanan server dengan membatasi dan mendefinisikan bagaimana server memproses permintaan dan pengguna berinteraksi dengan soket, port jaringan, dan direktori penting. Tidak disarankan untuk menonaktifkan SELinux karena alasan keamanan karena Anda akan membiarkan seluruh sistem disusupi.

Jalankan perintah di bawah ini untuk mengizinkan skrip dan modul HTTPD terhubung ke jaringan menggunakan port TCP apa pun.

#  /usr/sbin/setsebool -P httpd_can_network_connect 1

Itu dia!


Linux
  1. Bagaimana cara memeriksa kecepatan koneksi ssh Anda

  2. Menggunakan Instalasi PHP Alternatif

  3. Memecahkan masalah WordPress menolak koneksi FTP

  1. Putty:Makeover Ekstrim Menggunakan Pengelola Koneksi Putty

  2. Tidak dapat menambahkan pengguna menggunakan useradd

  3. Nginx tidak mulai menggunakan systemctl

  1. Membuat koneksi klien Cisco VPN di RHEL 7 menggunakan vpnc

  2. Menggunakan PHP di halaman html

  3. Ssh – Menggunakan Saluran Ssh yang Sudah Ada?