我试图弄清楚如何连接到对 RADIUS 服务器进行身份验证的 CISCO 交换机。这不是工业级开关,而是用于小型企业的。
我一直在为我的其他开关使用 phpseclib,但由于这个特定开关的工作方式存在一些差异,我正在考虑推出我自己的解决方案。
我有以下基本代码:
<?php
echo "attempt connect....<br>";
Try{
$connection = ssh2_connect('10.14.3.45', 22);
var_dump($connection);
echo "attemp ssh2 authorization....<br>";
echo ssh2_auth_password($connection, 'CANNetworkInfra', 'fe8CC+ad4aA9');
exit;
$stream = ssh2_exec($connection, 'show bonjour');
$errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
// Enable blocking for both streams
stream_set_blocking($errorStream, true);
stream_set_blocking($stream, true);
// Whichever of the two below commands is listed first will receive its appropriate output. The second command receives nothing
echo "Output: " . stream_get_contents($stream);
echo "Error: " . stream_get_contents($errorStream);
// Close the streams
fclose($errorStream);
fclose($stream);
}
catch (Exception $ex)
{
echo 'doing a var dump:';
var_dump($connection);
}
此代码因以下错误消息而死:
警告:ssh2_auth_password() [function.ssh2-auth-password]:在第 10 行的 /var/www/test/customssh.php 中使用密码对用户名进行身份验证失败
我认为问题与交换机总是在寻找一个公钥这一事实有关——我们没有使用它,因为我们想对一个半径服务器进行身份验证。手动连接时似乎发生的事情是这样的:
- 我们在终端窗口中运行以下命令:“ssh username@ipaddress”
- 开关检查 /home/username/.ssh/id_rsa 的默认文件夹中的公钥
- 它没有找到该文件,因此交换机会提示我们输入用户名。我们再次输入。
- 然后它会提示输入密码。
- 在我们提供正确的密码后,它会连接。
我们还没有找到方法来禁用交换机上的公钥检查。所以我的问题是,有没有办法通过 ssh2_auth_password() 发送用户名两次,这样我们就可以模拟我们手动连接的操作?
谢谢。