gpt4 book ai didi

ssh - 尝试使用 ssh2_auth_pubkey_file() 进行连接

转载 作者:可可西里 更新时间:2023-11-01 12:17:05 24 4
gpt4 key购买 nike

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

#!/usr/bin/php -q
<?php
$cwd = dirname(__FILE__).'/';
$filename = 'retrive-this.file';
$host = 'hostip';

$connection = ssh2_connect($host, 22, array('hostkey'=>'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)

key 文件具有权限 -rw-r--r-- (644)。此外,公钥已添加到远程用户的授权 key 中。我可以正常使用 ssh 命令进行 ssh,所以我认为这不是 ssh 授权问题,但谁知道呢。我是 ssh 和 ssh2 php 库的新手。

如果我在远程 sshd_config 文件中启用它,我可以使用 ssh2_auth_password() 进行连接,但我不想这样做,因为它会降低安全传输。

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

最佳答案

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

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

ssh2_auth_pubkey_file() is broken when the public key file is protected with a password AND libssh2 is compiled with libgcrypt, which is what debian/ubuntu and probably others do. I'm working on a solution for this bug, but if you need this working rebuild libssh2 yourself with OpenSSL.

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

openssl rsa -in id_rsa -out id_rsaNOPASSWORD

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

希望对您有所帮助。

关于ssh - 尝试使用 ssh2_auth_pubkey_file() 进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com