sftpサーバに接続し、サーバ内のディレクトリとファイルのリストを取得し、後で特定のファイルをダウンロードできるPHPスクリプトを作成する必要があります。私は、認証パートのためのppkファイル(私はこれが秘密鍵認証ファイルであると仮定します)を与えられました。プライベートキーを使ってsftpに接続するにはPHP curlを使用してください
私はカールがこれを行うことができるいくつかの場所を読みました。しかし、私はそれを行う方法が完全にはわかりません。私はhereからコードを貼り付けることを試みたが、私の理解はコードが秘密鍵の代わりに公開鍵ファイルを利用していることであった。
だからここに私は実際にきちんとこのSFTPに接続するために何をすべき..私はSFTPサーバ
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_URL, 'sftp://233.42.20.115/');
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_SSH_PRIVATE_KEYFILE,'megpxl_private.ppk');
curl_setopt($ch, CURLOPT_SSH_AUTH_TYPES,CURLSSH_AUTH_AGENT);
$output = curl_exec ($ch);
print_r($output);
に出力を印刷し、何も接続しないでしようとした何ですか?
====アップデート==== 今私はphpseclibを使用しようとしています。ここに私のコードは次のとおりです。
require_once 'phpseclib/Net/SSH2.php';
require_once 'phpseclib/Net/SFTP.php';
require_once 'phpseclib/Crypt/RSA.php';
require_once 'phpseclib/Crypt/RC2.php';
require_once 'phpseclib/Crypt/RC4.php';
require_once 'phpseclib/Math/BigInteger.php';
set_include_path('phpseclib/Net/');
$privatekey = file_get_contents('sftp_private.txt');
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents("private.ppk"));
$sftp = new Net_SFTP('233.12.20.225', 22);
if (!$sftp->login("myUserName", $rsa)) {
exit('Login Failed');
}
print_r($sftp);
しかし、私が得たすべては、このメッセージだった:
No compatible server to client encryption algorithms found in /var/www/html/phpseclib/Net/SSH2.php on line 1375
=============更新:!この作品は======あなたのホストは、通常のphpinfoに積極的にこの拡張子を持っている場合===========
require_once 'phpseclib/Net/SSH2.php';
require_once 'phpseclib/Net/SFTP.php';
require_once 'phpseclib/Crypt/RSA.php';
require_once 'phpseclib/Math/BigInteger.php';
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
$privatekey = file_get_contents('sftp_private.txt');
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents(mykey.ppk"));
$sftp = new Net_SFTP('223.22.20.122', 22);
if (!$sftp->login("usrPMEGPXLtxn", $rsa)) {
exit('Login Failed');
}
print_r($sftp->nlist()); // == $sftp->nlist('.')
print_r($sftp->rawlist()); // == $sftp->rawlist('.')
あなたは常に' curl_error($ chを)を使用することができます(http://phpseclib.sourceforge.net/new/sftp/examples.htmlから)最後のエラーを取得する:http://php.net/manual/en/function.curl-error.php –