3

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

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

因此,由于 ssh2_sftp 需要以前的 ssh 连接才能工作,我不知道哪个库或如何做才能连接到具有 SFTP 身份验证的 SFTP 服务器。

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

有任何想法吗?谢谢。

4

2 回答 2

2

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');
?>
于 2012-09-05T15:49:47.463 回答
1

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

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

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

我的服务器:

[0] => 公钥

[1] => 密码

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

[0] => 公钥

[1] => gssapi-keyex

[2] => gssapi-with-mic

[3] => 键盘交互

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

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

于 2012-09-04T11:33:09.673 回答