php - ssh2_auth_pubkey_file 获取错误回调返回错误(PHP 7.4,Ubuntu 20)

标签 php ubuntu ssh

这是我第一次使用公钥,我收到回调错误。我一直在努力寻找解决方案,但我不确定它是否与设置有关或我正在使用什么。
我的设置是 2 个 Virtual BOX VM(托管服务器的 Mint Linux,托管客户端的 Mac OS X)
两者都设置在桥接适配器上
两个 VM 都运行 Ubuntu 20.04,都是全新安装
这些是用于设置公钥的说明(我已经非常熟练地执行此操作,我已经做过几次了)
https://www.linuxbabe.com/linux-server/setup-passwordless-ssh-login
出于测试目的,该设置是在没有解释的情况下完成的。
我可以毫无问题地通过 SSH 连接到服务器
我的 cron 作业运行 shell 连接没有问题
我的 PHP 代码很容易测试连接性。

$connection = ssh2_connect('192.168.2.199', 22, array('hostkey'=>'ssh-rsa'));
ssh2_auth_pubkey_file($connection, 'sonyrules', '/opt/www-files/id_rsa.pub', '/opt/www-files/id_rsa');
我得到的第一个错误是它无法读取文件。我通过将文件移出主目录并为其分配自己的目录来解决此问题。该错误更改为当前错误。
PHP 警告:ssh2_auth_pubkey_file():使用公钥的 sonyrules 身份验证失败:回调返回错误
这就是我卡住的地方。我查看了/var/log/auth.log 并看到了以下内容。我不认为它告诉我为什么我会收到回调错误。
12 月 15 日 14:26:02 测试 sshd[1359]:从 192.168.2.180 端口 59666:11 收到断开连接:PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
12 月 15 日 14:26:02 测试 sshd [1359]:与验证用户 sonyrules 192.168.2.180 端口 59666 [preauth] 断开连接
任何帮助将不胜感激。

最佳答案

我最近也遇到了类似的问题。这可能是因为私钥文件。需要 PEM 格式 key ,但您可能有 OpenSSH 格式 key 。
请检查您的私钥是否以此开头:
-----开始 OPENSSH 私钥-----
如果是这种情况,您必须更改格式。运行这个:

ssh-keygen -p -m PEM -f /path/to/key
对我来说,这很有效。
您可以查看本文档的第一条评论:
https://www.php.net/manual/en/function.ssh2-auth-pubkey-file.php
还有这些帖子:
Openssh Private Key to RSA Private Key
https://serverfault.com/questions/939909/ssh-keygen-does-not-create-rsa-private-key

关于php - ssh2_auth_pubkey_file 获取错误回调返回错误(PHP 7.4,Ubuntu 20),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65307888/

相关文章:

PHP 通知 : Array to string conversion Error

ubuntu - 试图在 ubuntu 下的 code::blocks 中运行 ogre 项目

windows - 如何避免 bzr+ssh ://myserver/C:\mydir? 中的物理路径

gradle - gradle ssh插件中引用spring-boot组装jar

ruby - Ubuntu 在启动时启动 Rails

mysql - 通过 SSH 连接到 R 中的 MySQL 数据库

php mysql 用for循环保存mysql

php - PHP更新表错误

php - Symfony2 中的私有(private)图像

bash - 不断将文件内容输出到控制台?