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

时间:2012-09-04 09:46:48

标签: php ssh sftp

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

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

因为ssh2_sftp需要先前的ssh连接才能工作,我不知道使用SFTP身份验证连接到SFTP服务器的哪个库或如何操作。

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

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:2)

99%的键盘交互式身份验证只是提示输入密码。 phpseclib, a pure PHP SFTP implementation,如果密码验证失败,则尝试通过键盘交互提交密码。如何使用它的示例:

<?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');
?>

答案 1 :(得分:1)

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

当我在我自己的服务器上测试我的代码时,它运行了,而对于其他服务器,它失败了所以我认为这是因为ssh shell连接被禁用了。

在向两台服务器询问允许的auth方法后(使用ssh2_auth_none),我得到了错误:

我的服务器:

[0] =&gt;公钥

[1] =&gt;密码

另一台服务器(失败的服务器):

[0] =&gt;公钥

[1] =&gt; GSSAPI-keyex

[2] =&gt; GSSAPI与 - 麦克风

[3] =&gt;键盘交互

因为它不允许密码,所以它失败了。就是这样......

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