ssh2_auth_pubkey_file 出现错误回调返回错误(PHP 7.4,Ubuntu 20)

0 php ssh ubuntu

这是我第一次使用公共私钥,并且收到回调错误。我一直在努力寻找解决方案,但不确定它是否与设置或我正在使用的内容有关。

我的设置是 2 个 Virtual BOX VM(Mint Linux 托管服务器,Mac OS X 托管客户端) 两个都在桥接适配器上设置 两个虚拟机都运行 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');
Run Code Online (Sandbox Code Playgroud)

我遇到的第一个错误是无法读取文件。我通过将文件移出主目录并为其分配自己的目录来修复此问题。该错误更改为当前错误。

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 test sshd[1359]: 与验证用户 sonyrules 192.168.2.180 端口 59666 [preauth] 断开连接

任何帮助将不胜感激。

小智 5

我最近也面临类似的问题。可能是因为私钥文件。需要 PEM 格式密钥,但您可能拥有 OpenSSH 格式密钥。请检查您的私钥是否以此开头:-----BEGIN OPENSSH PRIVATE KEY-----

如果是这种情况,您必须更改格式。只需运行这个:

ssh-keygen -p -m PEM -f /path/to/key
Run Code Online (Sandbox Code Playgroud)

对我来说这有效。

您可以查看本文档的第一条评论: https://www.php.net/manual/en/function.ssh2-auth-pubkey-file.php

还有这些帖子: Openssh 私钥到 RSA 私钥 https://serverfault.com/questions/939909/ssh-keygen-does-not-create-rsa-private-key