创建一个小型图书馆通过SFTP发送和接收文件使用ssh2_sftp后方法,我发现,我有服务器连接到具有ssh连接禁用我只能通过SFTP连接。SFTP连接(不通过SSH)
服务器连接使用sftp命令在命令行下工作良好,但ssh发送给我一个“此服务只允许sftp连接。”
因此,因为ssh2_sftp需要一个先前的ssh连接才能工作,我不知道要使用SFTP身份验证连接到SFTP服务器的库或如何执行操作。
phpseclib是否使用与ssh2_ftp不同的身份验证方法?
任何想法?谢谢。
创建一个小型图书馆通过SFTP发送和接收文件使用ssh2_sftp后方法,我发现,我有服务器连接到具有ssh连接禁用我只能通过SFTP连接。SFTP连接(不通过SSH)
服务器连接使用sftp命令在命令行下工作良好,但ssh发送给我一个“此服务只允许sftp连接。”
因此,因为ssh2_sftp需要一个先前的ssh连接才能工作,我不知道要使用SFTP身份验证连接到SFTP服务器的库或如何执行操作。
phpseclib是否使用与ssh2_ftp不同的身份验证方法?
任何想法?谢谢。
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');
?>
是的,你完全正确@arkascha ...经过一些研究,我找到了原因。
当我测试我的代码对我自己的服务器,它的工作,并对其他服务器失败,所以我认为这是因为ssh外壳连接被禁用。
要求两台服务器的允许AUTH方法(使用ssh2_auth_none)后,我得到了什么是错的:
我的服务器:
[0] =>公钥
[1 ] =>密码
其他服务器(发生故障的那台服务器):
[0] =>公钥
[1] => GSSAPI-keyex
[2] => GSSAPI与 - 麦克风
[3] =>键盘互动
因为它不允许密码,所以它是失败的。就是这样......
我让你们浪费你的时间道歉......非常感谢键盘交互认证的
您是否曾尝试过使用'ssh2_ftp()'?从这个问题是不是完全清楚它是否是一个假设:) afaik'ssh2_connect()'建立一个连接而不选择任何特定的服务,例如shell或sftp –
“以前的SSH连接”是一个错误的术语。 SSH协议包括* shell *访问(在您的情况下禁用),SFTP子系统,端口转发等。在绝大多数情况下,SFTP不需要shell访问(当SFTP本身没有正确配置时,它可能需要shell,而您并不适用)。 –
@ EugeneMayevski'EldoSCorp它是正确的,因为sftp需要事先连接才能工作:) –