关于ssh2_auth_pubkey_file使用报错的问题1

问题

最近使用PHP实现一个 webssh 的时候遇到的问题,记录一下。

遇到的问题在使用ssh2_auth_password的时候正常,使用ssh2_auth_pubkey_file的时候遇到报错:

PHP Warning:  ssh2_auth_pubkey_file(): Authentication failed for root using public key: Callback returned error ...

ssh2_auth_pubkey_file 函数的参数说明:

  • $connection: 这是一个 SSH2 连接资源,表示与远程服务器的连接。
  • $username: 要进行身份验证的远程服务器的用户名。
  • $publickeyfile: 公钥文件的路径。该文件包含用于加密连接请求的公钥。
  • $privatekeyfile: 私钥文件的路径。该文件包含用于解密连接请求的私钥。
  • $passphrase(可选): 用于解密私钥文件的密码短语。如果私钥文件被加密,则需要提供此参数。默认为 NULL,表示没有密码短语。

经过排查发现可能是私钥文件有问题,使用ssh-keygen -t rsa生成的id_rsaBEGIN OPENSSH PRIVATE KEY,而不是BEGIN RSA PRIVATE KEY,导致上面的报错。

解决方案:

  1. 使用ssh-keygen -m PEM -t rsa -b 4096生成BEGIN RSA PRIVATE KEYid_rsa
  2. 使用ssh-keygen -m PEM -t rsa -f id_rsaBEGIN OPENSSH PRIVATE KEY转换成BEGIN RSA PRIVATE KEY

参考

www.php.net/manual/en/function.ssh...
blog.csdn.net/chezong/article/deta...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!