关于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_rsa
是BEGIN OPENSSH PRIVATE KEY
,而不是BEGIN RSA PRIVATE KEY
,导致上面的报错。
解决方案:
- 使用
ssh-keygen -m PEM -t rsa -b 4096
生成BEGIN RSA PRIVATE KEY
的id_rsa
- 使用
ssh-keygen -m PEM -t rsa -f id_rsa
将BEGIN OPENSSH PRIVATE KEY
转换成BEGIN RSA PRIVATE KEY
参考
www.php.net/manual/en/function.ssh...
blog.csdn.net/chezong/article/deta...
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: