web-dev-qa-db-ja.com

PHP関数ssh2_connectが機能していません

以下は私のスクリプトです:

    <?php
    $connection = ssh2_connect('XX.XX.XX.XX', 22);
    ssh2_auth_password($connection, 'root', '******');

    $stream = ssh2_exec($connection, 'useradd -d /home/users/test -m testftp');
    $stream = ssh2_exec($connection, 'passwd testftp');
    $stream = ssh2_exec($connection, 'password');
    $stream = ssh2_exec($connection, 'password');
    ?>

次のエラーが表示されます。

Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2

どうすれば対処できますか?

ありがとう

33
ravisoni

私はSSH2 PECL拡張機能をインストールしました、それはあなたの助けに感謝します...

19
ravisoni

正直なところ、phpseclibを使用することをお勧めします pure PHP SSH2実装 。例:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

ポータブルで使いやすく、機能も充実しています。

20
neubert

ssh2 lib をインストールする必要があります

Sudo apt-get install libssh2-php && Sudo /etc/init.d/Apache2 restart

それはあなたを道に連れて行くのに十分でなければなりません

12
Daniel Acevedo

OSXでbomebrewを実行している場合、次を使用してインストールしました。

brew install php56-ssh2

それは私のために働いた。 here から取得しました。 Macポートを使用するUbuntuとOSXも必要です。

8
Boni

私はubuntu 16.4でこれを解決しましたPHP 7.0.27-0 + deb9uおよびnginx

Sudo apt install php-ssh2 
7
Nanhe Kumar

Laravel 5または同様のものを使用している場合、@ neubertの答えを展開するには、次のようにはるかに単純なphpseclibを使用できます。

実行composer require phpseclib/phpseclib ~2.0

コントローラーに追加します

use phpseclib\Net\SSH2;

次に、次のようなコントローラーメソッドで使用します。

 $Host = config('ssh.Host');
 $username = config('ssh.username');
 $password = config('ssh.password'); 
 $command = 'php version';

 $ssh = new SSH2($Host);
    if (!$ssh->login($username, $password)) {
        $output ='Login Failed';
    }
    else{
        $output = $ssh->exec($command);
 }
3
DelightedD0D

開発環境としてCentOS 5.6を実行していますが、次のように動作しました。

su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini

/etc/init.d/httpd restart
2
crmpicco