在使用ssh2_sftp方法创建一个小型库以通过 SFTP 发送和接收文件后,我发现我必须连接的服务器禁用了 ssh 连接,我只能通过 SFTP 连接。
服务器连接在命令行下使用 sftp 命令运行良好,但 ssh 向我发送“此服务仅允许 sftp 连接”。
因此,由于 ssh2_sftp 需要以前的 ssh 连接才能工作,我不知道哪个库或如何做才能连接到具有 SFTP 身份验证的 SFTP 服务器。
phpseclib 是否使用与 ssh2_ftp 不同的身份验证方法?
有任何想法吗?谢谢。
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-with-mic
[3] => 键盘交互
因为它不允许密码,所以它失败了。就是这样...
我很抱歉让你浪费你的时间......非常感谢