关于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 协议》,转载必须注明作者和本文链接
关于 LearnKu