gpt4 book ai didi

php - ssh2_auth_pubkey_file 认证总是失败

转载 作者:可可西里 更新时间:2023-10-31 22:13:11 29 4
gpt4 key购买 nike

我正在尝试使用 PHP 的 ssh2 函数连接到另一台机器。我知道 ssh key 是在没有密码的情况下创建的,并且已正确分发,我可以在我机器的终端中将 ssh user@host 连接到服务器。

PHP 函数尝试使用 ssh key 文件连接到 ip 地址:-

 function minnerConnect($miner_serial) {

$port = '7822';
$miner_ip = $this->getMinerIp($miner_serial);

$methods = array(
'kex' => 'diffie-hellman-group1-sha1',
'hostkey' => 'ssh-dss',
'client_to_server' => array(
'crypt' => '3des-cbc',
'mac' => 'hmac-md5',
'comp' => 'none'),
'server_to_client' => array(
'crypt' => '3des-cbc',
'mac' => 'hmac-md5',
'comp' => 'none'));
$connection = ssh2_connect($miner_ip, $port, $methods);
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_dsa.pub',
'/root/.ssh/id_dsa','')) {
echo "Public Key Authentication Successful\n";
} else {
echo "Public Key Authentication Failed";
}

但显示的错误是:-

( ! ) Warning: ssh2_auth_pubkey_file(): Authentication failed for root using public key: Callback returned error in /var/www/application/models/miner_model.php on line 95

第 95 行是 '/root/.ssh/id_dsa','')) {.

有人可以提出修复建议吗?

最佳答案

本例中的错误是 key 是由 root 用户生成的,但 Web 服务器组/所有者 www-data 需要可以访问它们。

我不喜欢将 ssh key 保存在对 www-data 打开的 Web 文件夹中的想法,因此我将 key 文件移动到新用户的主目录 (/home/keyuser/) 然后让 www-data 可以访问它们。认证成功。

即使最初的错误是说它找到了文件,它也无法读取文件。

更好的调试方法是尝试通过 php 读取文件:

$prv_key = file_get_contents('/var/www/application/files/id_dsa');
print "<pre>";
var_export($prv_key);
print "</pre>";

关于php - ssh2_auth_pubkey_file 认证总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23880078/

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