我想在机器上安装它Windows+Apache
.文档说SSH2需要OpenSSL
和libssh2
库.我在我的php.ini
文件中添加了这些行:
extension=php_openssl.dll
extension=php_ssh2.dll
Run Code Online (Sandbox Code Playgroud)
并重新启动Apache,但它仍然无法正常工作(Fatal error: Call to undefined function ssh2_connect()
).
谁能解释我如何安装这项服务?
谢谢
ps:我是意大利人,对不起我的英语......
我正在开发一个项目,我正在使用C++中的libssh2将端口转发到MySQL.我已经使用它进行用户名/密码验证,但我现在想要使用公钥/私钥验证.libssh2的文档很差,所以我很难解决我需要做的事情.
我想要做的是让一个Android应用程序将数据发布到我的C++应用程序,其中C++将获得SSH详细信息以及auth密钥,并创建SSH隧道.C++正在获得关键,然后我正在执行以下操作来进行公钥认证.
else if (this->getAuthMethod() == SupportedAuthMethods::AUTH_PUBLICKEY)
{
string test = this->getSSHPrivateKey();
boost::replace_all(test, "\n", "");
unsigned char * key = (unsigned char *)test.c_str();
size_t sizeofkey = strlen((char*)key);
cout << key << endl;
stringstream logstream;
logstream << "Using public key authentication for SSH Host: " << this->getSSHHostnameOrIPAddress();
this->bitsLibrary->writeToLog(logstream.str(), "SSHTunnelForwarder", "authenticateSSHServer");
if (chosenAuthMethod & SupportedAuthMethods::AUTH_PUBLICKEY)
{
//int result = 0;
int result = libssh2_userauth_publickey(this->session, this->getUsername().c_str(), key, sizeofkey, SSHTunnelForwarder::publicKeyAuthComplete, 0);
if (result != 0)
{
char * error = NULL;
int len = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译.cpp文件,但我必须安装libssh2.我从libssh2.org下载了包,当我输入:./ buildd我得到:
无论是libtoolize还是glibtoolize都找不到!
我不知道该怎么做,我已经包含在头文件libssh2.h(#include)中,并且该文件确实存在于我拥有源文件的同一文件夹中,我正在尝试编译.
我已经阅读了一篇文章,并且找不到适用于我所拥有的"解决方案".
我正在尝试使用php脚本通过SFTP上传文件.我已成功使用CyberDuck连接,但我需要以编程方式执行此操作.
我有一个来自我在CyberDuck中使用的供应商的.PPK文件.我有一个用户名.我有主机名.如果我打开PPK文件,我会看到一些公共线路,专线和私有MAC.
无论如何我可以使用我的信息访问服务器以执行我需要做的事情吗?
这是我正在玩的代码:
<?php if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
?>
<?php
$conn = ssh2_connect('hostname.com', 22);
echo $conn;
ssh2_auth_pubkey_file($conn,'USERNAME','/var/www/html/FILENAME.PPK');
// send a file
ssh2_scp_send($conn, '/var/www/html/FILETOSEND.TXT', 'FILETOSEND.TXT', 0644);
?>
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但文件没有显示在服务器上.我可以确认我的webhost上安装了SSH2.
感谢您的任何帮助,您可以提供.
我正在使用libssh2在iOS上寻找一个反向端口转发的示例代码.这是一个接近的例子:
但我希望它可以根据iOS和Objective-C进行定制.直C也很好.我对socket和FD代码持谨慎态度,宁愿拥有一个比我正在攻击的解决方案更强大的解决方案.我已经尝试了一段时间的RTFMing libssh2,但它最终只是RTF代码...而且我对我的C代码没有足够的信心去做这个网络部分.
编辑:在iOS 4.3(例如iphone4,ipad2)上进行端口转发的ssh工作实现的赏金,不需要libssh2
具体.
我正在使用PHP ssh2
库,只是做:
$ssh = ssh2_connect($hostname, $port);
Run Code Online (Sandbox Code Playgroud)
问题是我想设置超时,即5秒后停止尝试连接.据我所知,ssh2库本身不支持连接超时.如何实现超时包装?
我觉得这值得一个问题,因为StackOverflow似乎没有足够的主题.
我喜欢进步吧.但是,这次我想做一些不同的事情.我想用PHP做以下事情,这个看起来比上一个难得多:
想想FileZilla,但是在浏览器中,用PHP构建.我不想破解Apache或添加任何Apache mod.
这些文档记录了PHP的SSH2扩展(我目前正在使用它 - 你通过pecl安装)和替代的PHPSecLib,我没有使用,但可能会在以后查看.
我的界面允许轻松交换/输出 - 编码到界面而不是实现等 ...
这很好,但他们只是执行实际的下载,就是这样.
PHP有一个非常有趣的回调叫stream_notification_callback
,你可以在此处详细了解.
这看起来很棒,并且是一个有希望的步骤,直到有人查看PHP的源代码并发现,不幸的是,SSH2/SFTP 不允许与此集成.
感谢hek2mgl努力研究这个.
我的想法stream_notification_callback
是每次检索数据时都会传递当前下载大小的通知; 因此,使用当前下载的金额和总文件大小提供计算百分比所需的数据.但这不适用于SSH2和SFTP ......
在我看来,这将是最难完成的.将数据下载到临时文件是可能的......这就是我设法挖掘的内容:http://ee.php.net/manual/en/function.fread.php#84115 - 但是将这种代码与进度条似乎很疯狂.
还有cURL,但是我没有看到通过SFTP暂停/恢复下载.如我错了请纠正我.
那么,我将如何使用PHP在浏览器中集成上述需求?忘记客户端的东西,只需将数据传输到浏览器就足够了,所以建议执行此操作会很棒.
我正在尝试重现一个问题,其中某些客户端在使用SFTP协议下载时会收到错误的文件内容。
根据我们的SFTP服务器(CrushFTP)日志,他们可能会在一个会话中打开多个文件,然后使用一些流水线来下载文件。我不知道他们使用哪种类型的库,因为他们为此使用了一些SAAS提供程序。
我正在尝试使用libssh2重现此行为,但是sftp_read() internal error
在第一个打开文件异步返回LIBSSH2_ERROR_EAGAIN后,在第二个打开的文件上异步调用libssh2_sftp_read时,即使在本地主机连接到OpenSSH时,也遇到了问题。
在浏览SSH文件传输协议IETF草案时,我可以看到该协议允许同时打开多个文件并使用多个SSH_FXP_READ请求请求其内容,而无需等待响应。
以下是我用于测试的代码(SSCCE,但是很长-C非常冗长)-使用以下代码进行编译gcc sftp_multifile.c -lssh2 -Wall -g -o sftp_multifile
和测试:
./sftp_multifile localhost 22 testusername testpassword /usr/share/dict/words /usr/share/doc/words/readme.txt
connect try: ai_family=10 ai_socktype=1 ai_protocol=6 addr=::1 port=22
opening: /usr/share/dict/words
opening: /usr/share/doc/words/readme.txt
reading: /usr/share/dict/words from 10134400 to 140736927200896
read result: -37
reading: /usr/share/doc/words/readme.txt from 10135536 to 140736927201920
read result: -31
Bad read result: -31
Read error: /usr/share/doc/words/readme.txt: sftp_read() internal error
Run Code Online (Sandbox Code Playgroud)
我是否在代码中出错了?或者libssh2是否仅不支持对多个打开的文件进行libssh2_sftp_read管道传输?或者可能只是libssh2中的错误应报告给其维护者?
#include <libssh2.h>
#include <libssh2_sftp.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试安装php的ssh2扩展,并且有点困难。该文件在那里,它只是没有加载到php中。
首先,我安装了ssh2:
aptitude install libssh2-1-dev libssh2-php
Run Code Online (Sandbox Code Playgroud)
(对于它的价值,我在Nginx上运行Ubuntu 12.04。)
我可以看到ssh2是使用modules命令加载的:
php -m |grep ssh2
ssh2
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,出现未定义的函数错误。
在我的phpinfo()脚本中,我可以看到我的php安装程序在此目录中扫描了其他ini文件:/etc/php5/fpm/conf.d。列出该目录的内容,我可以看到我的ssh2.ini在那里:
ls /etc/php5/fpm/conf.d
mysqli.ini mysql.ini pdo.ini pdo_mysql.ini ssh2.ini
Run Code Online (Sandbox Code Playgroud)
再次根据phpinfo,将加载其他四个ini文件。SSH2不是。
我还尝试将“ extension = ssh2.so”直接放置在我的php.ini文件-/etc/php5/fpm/php.ini中。是的-我已经重新启动了Nginx服务器。
我还有其他东西吗?
我在 google 上搜索了 "libbssh vs libssh2" ,找不到关于它们之间区别的很好的解释。
主要区别是什么?
我需要的主要功能是复制文件,推荐使用哪个库?
libssh2 ×10
php ×5
ssh ×3
c ×2
c++ ×2
sftp ×2
apache ×1
compilation ×1
dll ×1
ios ×1
libssh ×1
linux ×1
nginx ×1
objective-c ×1
private-key ×1
public-key ×1
ubuntu ×1
windows ×1