以下は私のスクリプトです:
<?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
どうすれば対処できますか?
ありがとう
私はSSH2 PECL拡張機能をインストールしました、それはあなたの助けに感謝します...
正直なところ、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');
?>
ポータブルで使いやすく、機能も充実しています。
ssh2 lib をインストールする必要があります
Sudo apt-get install libssh2-php && Sudo /etc/init.d/Apache2 restart
それはあなたを道に連れて行くのに十分でなければなりません
OSXでbomebrewを実行している場合、次を使用してインストールしました。
brew install php56-ssh2
それは私のために働いた。 here から取得しました。 Macポートを使用するUbuntuとOSXも必要です。
私はubuntu 16.4でこれを解決しましたPHP 7.0.27-0 + deb9uおよびnginx
Sudo apt install php-ssh2
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);
}
開発環境としてCentOS 5.6を実行していますが、次のように動作しました。
su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
/etc/init.d/httpd restart