gpt4 book ai didi

php - 使用 PHPSECLIB 通过 SSH 与 RSA 连接

转载 作者:行者123 更新时间:2023-12-02 13:51:26 25 4
gpt4 key购买 nike

我正在学习如何使用“phpseclib”库。

我已成功使用用户名/密码组合通过 SSH 连接。

我现在想使用私钥连接,但我似乎做不到。让我解释一下我是如何做到这一点的,希望有人能指出我的错误。

<?php

use phpseclib\Net\SSH2;
use phpseclib\Crypt\RSA;

include('vendor/autoload.php');

define('NET_SSH2_LOGGING', SSH2::LOG_COMPLEX);

$ssh = new SSH2('MYIP');
$rsa = new RSA();

$rsa->setPublicKeyFormat(RSA::PUBLIC_FORMAT_OPENSSH);

extract($rsa->createKey(2048));

file_put_contents('privatekey', $privatekey);

if($rsa->loadKey(file_get_contents('privatekey')))
{
echo('Key loaded');
} else {
throw new Exception('Key not loaded');
}


if($ssh->login('chris', $rsa))
{
echo('Connected');
} else {
echo $ssh->getLastError();
throw new Exception('Not Connected');
}

如您所见,我将公钥格式设置为“openssh”,然后创建 key 。使用 createKey 方法创建的值,我将该 key 放入名为“privatekey”的文件中(没有扩展名,但不确定是否需要,因为它只是文本)。然后正常,加载 key 并将其用作登录中的值。

我使用过官方文档(不是很好)和谷歌搜索,但我都不太幸运。

getLastError 的输出是:

SSH_MSG_USERAUTH_FAILURE: publickey,password

在此先感谢您的帮助。

最佳答案

您可以整天在客户端创建 key 对,但除非您生成的 key 对的公共(public)部分在 /home/user/.ssh/authorized_keys 文件中,否则它不会事情。如果您正在创建 key 并尝试在同一个脚本中连接它们……它们不太可能在那个文件中。

在这种特殊情况下,您应该加载一个私钥,其对应的公钥已经在 /home/user/.ssh/authorized_keys 文件中。使用 $rsa->loadKey(...) 加载它并/然后/尝试在 SSH 的登录方法中使用该 RSA 对象。

关于php - 使用 PHPSECLIB 通过 SSH 与 RSA 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833824/

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