当前位置:  开发笔记 > 编程语言 > 正文

尝试使用ssh2_auth_pubkey_file()进行连接

如何解决《尝试使用ssh2_auth_pubkey_file()进行连接》经验,为你挑选了1个好方法。

我正在尝试制作一个在终端上运行的php脚本,它将通过ssh连接到远程服务器并检索文件.到目前为止这是我的代码

#!/usr/bin/php -q
'ssh-rsa'));
$methods = ssh2_auth_pubkey_file($connection, 'remoteuser',
                                 $cwd.'ssh/id_rsa.pub',
                                 $cwd.'ssh/id_rsa', "it's an inception");
var_dump($methods);

//ssh2_scp_recv($connection, "/remote/server/path/to/$filename", $cwd.$filename);
?>

现在我遇到了这个ssh2_auth_pubkey_file()函数的问题,当我运行脚本时它会返回:

PHP Warning:  ssh2_auth_pubkey_file(): Authentication failed for remoteuser using public key in /home/tonyl/Projects/get-file-ssh.php on line 10
bool(false)

密钥文件具有权限-rw-r--r--(644).此外,公钥已添加到remoteuser的授权密钥中.我能正常使用ssh命令ssh,所以我不认为这是一个ssh授权问题,但是谁知道.我是ssh和ssh2 php库的新手.

ssh2_auth_password()如果我在远程sshd_config文件中启用它,我可以使用它连接,但我不想这样做,因为它减少了安全性传输.

关于我能做什么的任何想法.



1> 小智..:

这是php中的已知错误:密码保护的私钥不能用于某些组合.

请参阅:https://bugs.php.net/bug.php?id = 58573

当公钥文件受密码保护时,ssh2_auth_pubkey_file()被破坏而libssh2是用libgcrypt编译的,这是debian/ubuntu和其他人所做的.我正在研究这个bug的解决方案,但是如果你需要这个工作,请用OpenSSL自己重建libssh2.

解决方法可能是存储未加密的私钥.要解密密钥:

openssl rsa -in id_rsa -out id_rsaNOPASSWORD

然后使用文件id_rsaNOPASSWORD而不提供第五个参数'passphrase'.它可以工作,但你必须小心你的解密密钥文件.无论如何,安全级别并没有真正受到严重影响,因为即使使用加密密钥,您仍然需要将未加密的密码传递给ssh2_auth_pubkey_file函数...

希望能帮助到你.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有