问题标签 [libssh2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2269 浏览

c - 通道未阻塞时 libssh2_channel_write 的行为

libssh2_channel_write_ex手册页:

实际写入的字节数或失败时的负数。LIBSSH2_ERROR_EAGAIN 否则会阻塞。虽然 LIBSSH2_ERROR_EAGAIN 是一个负数,但它本身并不是真正的失败。

现在我有一个问题。当我收到时LIBSSH2_ERROR_EAGAIN,这是否意味着什么都没有发送,我必须重新发送所有数据?还是表示已经发送了一些数据

我的问题是,如果我试图发送更多底层套接字可以保存的数据,write()无论如何都应该阻塞,从今以后我怎么能希望发送一大块数据而不是LIBSSH2_ERROR_EAGAIN每次都得到呢?

0 投票
1 回答
2184 浏览

perl - perl Net::SSH2 通道执行超时

我正在使用 Net::SSH2 在远程主机上运行慢速管理命令。

Perl 5.8.8 libssh2 1.2.2

我在频道 exec 上不断收到奇怪的“超时”。 $chan->exec( $command );

正在执行的命令通常运行长达一个小时(60 分钟),在执行期间输出最少。

短命令工作正常。大约一分钟后,输出最小的慢速返回 1。

我已将套接字设置为阻塞并将超时设置为 60 分钟等等......没有任何帮助。

有任何想法吗?

0 投票
3 回答
7487 浏览

php - 等待命令完成在 PHP 中使用 SSH2_Shell

我有一个在 PHP 中工作的 SSH2_Shell 会话。我的问题是我需要一个命令才能完全完成,然后再转到下一个命令。到目前为止,这是我的代码:

tcpdump.sh 脚本正在运行 lftp 命令,但没有得到足够的时间来完成。我不能使用睡眠,因为它可能需要比指定时间更长的时间,如果只需要几秒钟,我不想让用户等待。我没有运气像我那样实现stream_set_blocking,它似乎冻结了我的浏览器。

总的来说,我需要一种方法来检测命令何时完成并进入下一个命令。

提前致谢!

0 投票
3 回答
5858 浏览

perl - Net::SSH2 的密钥

我有一个使用Net::SSH2的简单 perl 测试脚本,但我无法让它与公钥身份验证一起工作。

注意:在阅读了几个回复后,我意识到我应该提到我创建了脚本来帮助缩小我在使用 Net::SSH2 的另一个应用程序中遇到的问题。因此,我无法切换到其他软件包,例如Net::OpenSSHNet::OpenSSH::Compat::SSH2

注意更新:正如萨尔瓦 指出的那样,无需修补原始应用程序即可使用Net::OpenSSH::Compat::SSH2 。

这是代码:

我一直ssh-keygen在 Ubuntu 上使用生成密钥对:

以上工作正常 - 我可以通过 SSH 连接到服务器。

当我运行 Perl 代码时,使用受密码保护的密钥时出现以下错误:

如果我尝试使用非密码保护的密钥,它可以正常工作。

我安装了以下库:

情节变厚了

如果我删除libssh2-1and libssh2-1-dev,我会得到一个错误,正如预期的那样:

如果我libssh2从源代码构建,我无法重新安装Net::SSH2,因为它找不到开发头文件。但是,如果我重新安装libssh2-1libssh2-1-dev然后libssh2从源代码构建和安装,它就可以工作。

这是否意味着在 Ubuntu 10.04 上构建 libssh2-1-dev 有问题?如果是这样,我如何libssh2从源安装并正确安装Net::SSH2,而不需要libssh2-1-dev. 我认为从源代码构建正在覆盖或覆盖 Ubuntu 包。

更新

正如Daniel Stenberg 的回复中所指出的,Ubuntu 10.04 软件包现在有点过时(版本 1.2.2,与最新的稳定版本 1.2.8 相比)。从 Ubuntu 软件包的“顶部”源安装 libssh2 解决了这个问题。但是,这对我来说感觉很混乱。如何删除 Ubuntu 软件包,从源代码安装 libssh2,并且仍然构建 Net::SSH2 — 我如何告诉 Net::SSH2 在哪里可以找到 libssh2 开发头文件?

更新 2

salva 再次进行救援,并展示了如何使用和目录配置Net::SSH2安装程序,以便它可以与 libssh2 的源安装一起使用。谢谢萨尔瓦!请注意,可以只覆盖.顶部的和变量而不是修补。直到我查看了萨尔瓦的补丁,我才意识到这一点。libincludeMakefile.PL$lib$incMakefile.PL

0 投票
2 回答
1771 浏览

php - PHP 5 SSH2 函数

我已经在我的 CentOS WHM/CPanel 服务器中安装并启用了 SSH2,这里来自 PHP INFO:

ssh2 SSH2 支持启用扩展版本 0.11.2 libssh2 版本 0.18 横幅 SSH-2.0-libssh2_0.18 远程转发启用基于主机的身份验证启用轮询支持启用公钥子系统启用

已注册的 PHP 流 https、ftps、compress.zlib、php、file、glob、data、http、ftp、ssh2.shell、ssh2.exec、ssh2.tunnel、ssh2.scp、ssh2.sftp

但是,每当我尝试使用 SSH2 PHP 函数来接收文件时,都会得到以下信息:

警告:ssh2_scp_recv(/home/XXXX) [function.ssh2-scp-recv]:无法打开流:是第 16 行 /pathtoFile 中的目录

这是代码:

0 投票
1 回答
1009 浏览

php - PHP5,使用 SSH2 函数 DL 文件夹中的所有文件,然后从远程服务器中删除它们

我正在尝试将文件从一台服务器 DL 到另一台服务器。

成功连接并登录后,我运行以下命令:

但当然,这失败了......我不知道为什么。它说该文件夹不存在。/dl 是远程服务器上的绝对路径。

我有一种感觉,“opendir”正在查看我的本地服务器(正在运行的服务器),而不是远程服务器。

这里的目标是查看此文件夹并 DL 文件夹中的每个文件。下载后,它可以将其从远程服务器上删除。

0 投票
1 回答
778 浏览

php - 使用公钥的 PHP SSH2 身份验证

我们使用 PHP 模块 SSH2 在远程服务器上运行命令。我们正在使用公钥 (ssh2_auth_pubkey_file()) 进行身份验证,但问题是我们必须将 id_dsa (private) 和 id_dsa.pub (public) 密钥复制到我们的 Web 服务器 (lighttpd) 的根目录中并将它们设置为 chmod 644,否则我们得到“使用公钥输入的 root 身份验证失败”。这似乎是一个主要的安全问题。无论如何要保留 id_dsa chmod 600 的权限,而不是让它被 Web 服务器读取,即所有者和组仍然是 root:root 而不是 lighttpd:lighttpd?

0 投票
2 回答
819 浏览

php - PHP 添加新的 .dll 使 Apache 服务器无法启动

我正在尝试向我的 PHP 添加扩展。我在适当的目录(如我的 php.ini 文件中列出)中有文件 - libssh2.dll,并确保扩展名 = libssh2.dll。我还按照其他线程的建议将 .dll 文件复制到了 system 和 system32 文件夹。当我尝试启动我的 Apache 服务器时,我收到以下 Windows 错误:

Apache HTTP Server 遇到问题需要关闭。对此造成的不便,我们表示歉意。

和 Apache 监视器错误:

请求的操作失败!

我检查日志以查看:

[2011 年 7 月 26 日星期二 16:43:06] [警告] pid 文件 C:/Program Files/Apache/logs/httpd.pid 被覆盖 - 以前 Apache 运行的不干净关闭?

我试图朝这个方向前进,但在这一点上完全被难住了。希望有人可以帮助我,这样我就可以找出问题所在。提前谢谢各位!

干杯

0 投票
1 回答
1808 浏览

objective-c - Reverse Port Forward using libssh2 on iOS

I'm looking for some example code of a reverse port forward on iOS using libssh2. Here's a close example:

Example code of libssh2 being used for port forwarding

But I'd like it to be tailored to iOS and objective-C if possible. Straight C is fine too. I'm wary of the socket and FD code, and would rather have a robust solution than the one I'm hacking up. I've tried RTFMing libssh2 for a while, but it ends up being just RTF Code... and I'm not confident enough in my C code to do this networking part.

EDIT: bounty for a working implementation of ssh with port forwarding on iOS 4.3 (e.g. iphone4, ipad2), doesn't need to be libssh2 in specific.

0 投票
1 回答
935 浏览

php - 尝试使用 ssh2 连接 sftp 服务器,但脚本永远运行而没有任何错误

我尝试使用 ssh2 连接到 sftp 服务器,但似乎 php 陷入了循环。错误报告已开启。

我的代码:

生成此输出:

但是一旦脚本尝试运行 ssh2_scp_recv 它就会卡住并永远运行而没有任何失败。我尝试了现有和不存在的文件。每次相同的结果 - 脚本循环运行。

即使我尝试 ssh2_exec 或其他需要在服务器上写入或读取的方法,它不仅是 ssh2_scp_recv,它也会卡住。

这里发生了什么?

谢谢!