这是一个古老的话题,但我始终无法找到对我们任何地方都有用的答案。
我们的根本原因是库不能使用OpenSSH RSA密钥。我不知道到底是哪个有问题;我们使用的是Ubuntu 20.04的libssh2和php7包。4-ssh2。自PHP 5天以来,这似乎一直是一个问题,2021仍在继续。
如果您的私有RSA密钥以以下行开头,则可以轻松测试它是否是OpenSSH RSA密钥:
-----BEGIN OPENSSH PRIVATE KEY-----
不幸的是,这是运行时的默认输出
ssh-keygen
在许多流行的web服务器上。
如果它从以下内容开始,则假设其他所有内容都已正确设置,它应该可以工作:
-----BEGIN RSA PRIVATE KEY-----
可以通过运行
ssh-keygen -m PEM -t rsa
. 似乎其他关键类型也起到了作用。
如果您没有使用OpenSSH格式的RSA密钥,我建议您检查系统身份验证日志(例如,/var/log/auth.log
). 另外,作为您正在尝试的用户尝试SSH-ing(例如,sudo -u www-data ssh ubuntu@localhost -i ~/.ssh/id_rsa
). 这些人提供的任何错误消息都应该比这里遇到的消息更有帮助。
请注意,不正确的文件权限也可能导致此错误消息。我们保留了SFTP用户拥有的所有网站文件,因此web服务器只能通过SFTP写入任何文件。我们将访问密钥设置为root:www-data
所以SSH用户和web服务器都是www-data
小组可以使用这些键。
最后,确保密钥位于授权密钥文件中(~/.ssh/authorized_keys
).
祝遇到这件事的人好运!