PHP中的SFTP连接(不通过ssh)


SFTP connection in PHP (not via ssh)

在使用ssh2_SFTP方法创建了一个小库以通过SFTP发送和接收文件后,我发现我必须连接的服务器禁用了ssh连接,我只能通过SFTP连接。

服务器连接在使用sftp命令的命令行下运行良好,但ssh向我发送了一个"此服务仅允许sftp连接。"

因此,由于ssh2_sftp需要以前的ssh连接才能工作,我不知道是哪个库,也不知道如何使用sftp身份验证连接到sftp服务器。

phpseclib是否使用与ssh2_filtp不同的身份验证方法?

有什么想法吗?谢谢

99%的键盘交互式身份验证只提示输入密码。phpseclib是一个纯PHP SFTP实现,如果密码验证失败,它会尝试通过键盘交互提交密码。如何使用示例:

<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}
// outputs the contents of filename.remote to the screen
echo $sftp->get('filename.remote');
?>

是的,你完全正确@arkascha。。。经过一番研究,我找到了原因。

当我在自己的服务器上测试我的代码时,它工作了,而在另一台服务器上它失败了,所以我认为这是因为ssh shell连接被禁用了。

在向两个服务器询问允许的身份验证方法(使用ssh2_auth_none)后,我得到了错误:

我的服务器:

[0]=>公钥

[1]=>密码

另一台服务器(发生故障的服务器):

[0]=>公钥

[1]=>gssapi keyex

[2]=>带麦克风的gssapi

[3]=>键盘交互式

由于它不允许使用密码,它正在失败。就是这样…

我很抱歉让你浪费时间。。。非常感谢