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