有没有办法通过使用phpseclib或任何其他方法连接sftp与私钥和ftp密码。phpseclib sftp连接私钥和密码
回答
SFTP服务器同时使用密码和公钥认证是很少见的。我的猜测是,你最可能拥有的是密码保护的私钥。如果这样你就可以登录正是如此:
<?php
include('Net/SFTP.php');
include('Crypt/RSA.php');
$sftp = new Net_SFTP('www.domain.tld');
$key = new Crypt_RSA();
$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$sftp->login('username', $key)) {
exit('Login Failed');
}
print_r($sftp->nlist());
?>
如果确实是你的服务器确实是做以下两个应该工作:
<?php
include('Net/SFTP.php');
include('Crypt/RSA.php');
$sftp = new Net_SFTP('www.domain.tld');
$key = new Crypt_RSA();
$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$sftp->login('username', $key) && !$sftp->login('username', 'password')) {
exit('Login Failed');
}
print_r($sftp->nlist());
?>
它引发登录失败,我可以通过命令行和filezilla连接凭证。 – 2013-04-03 20:49:40
哪一个失败?我发布了两个。如果你没有尝试两个都尝试。如果你确实......你能为我的日志找到两个吗? http://phpseclib.sourceforge.net/ssh/examples.html#logging演示如何启用日志记录。谢谢! – neubert 2013-04-03 21:05:27
我需要使用第二个选项co'z客户端给我私钥,私钥密码和ftp密码。它没有返回任何日志。 – 2013-04-03 21:21:06
我想说的只是自己尝试密码身份验证。
以下是每个日志发生的情况。
phpseclib发送一个SSH_MSG_SERVICE_REQUEST到服务器,有效地说:“嘿 - 我想auth - 那好吗?”
服务器响应一个SSH_MSG_SERVICE_ACCEPT,有效地说“肯定 - 给我你得到什么!”
phpseclib然后发送一个SSH_MSG_USERAUTH_REQUEST与对应于您的私钥的公钥,有效地说:“好的 - 让我们用我的私钥授权 - 确保你会接受它......这是你的白公钥名单?”
服务器然后回应一个NET_SSH2_MSG_USERAUTH_PK_OK消息,有效地说,“呀 - 我们没问题 - 请使用它现在签署服务器标识符”。
phpseclib这样做,然后服务器就像“没关系!我只记得 - 我唯一的身份验证类型是基于密码的身份验证!”
phpseclib去“meh”哈哈,然后发送另一个SSH_MSG_SERVICE_REQUEST,再次请求授权,服务器就像“什么!?你为什么要求授权!?”
好像phpseclib也许不应该被发送的是第二SSH_MSG_SERVICE_REQUEST消息 - 它应该去直接到SSH_MSG_USERAUTH_REQUEST - 但可惜它目前还没有做到这一点。我会尝试更新代码库来做到这一点,并向作者提交一个pull请求。
谢谢!
这是很好的解释。所以解决方案是修改NET库?。非常感谢你帮助解决这个问题。 – 2013-04-18 19:20:50
我会先看看是否替换'if(!$ sftp-> login('********',$ rsa)&&!$ sftp-> login('********', '********')){'with'if(!$ sftp-> login('********','********')){'诀窍。 PHP库应该可能会改变,但在你的情况下,我认为你可以让它与lib一起工作。 – neubert 2013-04-18 19:25:05
这并没有工作客户端服务器总是期待密钥和密码。在答案中查看我的日志。 – 2013-04-18 19:35:56
- 1. 使用PHP和私钥连接到SFTP
- 2. 连接到MQ使用安全密钥(公钥和私钥)
- 3. 使用libssh2连接到需要密钥和密码的SFTP服务器
- 4. OpenSSH for Windows与私钥和密码的连接
- 5. 解密需要私钥和密码
- 6. 通过SFTP和SSH密钥的LFTP连接问题
- 7. 使用私钥代替密码从sftp下载文件
- 8. Git ssh私钥密码
- 9. Ruby Net的公钥/私钥验证:: SFTP
- 10. sftp vs ssh公钥/私钥(初学者)
- 11. 使用密钥和密码自动执行SFTP登录
- 12. Aptana SFTP密钥交换
- 13. 使用私有RSA密钥在libcurl中的SFTP身份验证
- 14. phpseclib OpenSSH或PuTTYgen密钥生成
- 15. 用RSA公钥和私钥加密和解密一个SecretKey
- 16. Bouncycastle加密私钥PEM输出:RSA私钥与私钥
- 17. 带私钥认证的SFTP cURL
- 18. NetBeans中SFTP的私钥文件
- 19. SFTP与私钥,没有用户名
- 20. notepad ++无法使用SFTP连接 - 验证时出错:私钥文件无效
- 21. 远程存储密码保护私钥
- 22. JWT令牌 - 密码为私钥
- 23. 如何与RSA公钥/私钥和GnuTLS形成TLS连接?
- 24. 从服务器到另一个没有私钥密码的SSH连接
- 25. DSN连接和密码与@
- 26. Phpseclib连接MYSQL服务器
- 27. SFTP连接
- 28. 密钥库密钥和私有密钥...讲解深入浅出,请
- 29. 密钥长度问题:phpseclib上的AES加密和PyCrypto上的解密
- 30. 如何自动输入带密码的ssh私钥密码
您能向我们展示更多关于您的具体情况的信息,或者展示您尝试自己找到答案的资源,以及为什么这些答案不适合您?试试这个问题:http://stackoverflow.com/questions/13806699/phpseclib-can-i-connect-using-username-key-and-password-not-a-key-password – 2013-04-03 20:13:00
可能重复的[phpseclib - Can我连接使用用户名,密钥和密码(不是密钥密码)](http://stackoverflow.com/questions/13806699/phpseclib-can-i-connect-using-username-key-and-password-nota-a-键 - 密码) – 2017-03-31 20:55:35