当前位置: 首页 > news >正文

Redis - php通过ssh方式连接到redis服务器

1.应用场景

主要用于使用php通过ssh方式连接到redis服务器,进行一些操作. 

2.学习/操作

1.文档阅读

chatgpt

& 其他资料

SSH - 学习与实践探究_ssh应用场景

2.整理输出

2.1 是什么

TBD

2.2 为什么需要「应用场景」

TBD

2.3 什么时候出现「历史发展」

TBD

2.4 怎么实践

TBD

php 通过ssh方式连接到redis服务器

要通过 SSH 方式连接到 Redis 服务器,可以使用 PHP 的 ssh2 扩展和 Redis 扩展。

首先,需要安装 ssh2 扩展和 Redis 扩展。可以使用以下命令安装:

sudo apt-get install libssh2-1-dev
sudo pecl install ssh2 redis

安装完成后,在 PHP 中加载这两个扩展:

extension=ssh2.so
extension=redis.so

然后,可以使用以下 PHP 代码连接到 Redis 服务器:

<?php
// SSH 连接参数
$ssh_host = 'ssh_host';
$ssh_port = 22;
$ssh_user = 'ssh_user';
$ssh_pass = 'ssh_pass';// Redis 连接参数
$redis_host = '127.0.0.1';
$redis_port = 6379;
$redis_auth = 'redis_auth';// SSH 连接
$ssh = ssh2_connect($ssh_host, $ssh_port);
ssh2_auth_password($ssh, $ssh_user, $ssh_pass);// Redis 连接
$redis_sock = ssh2_tunnel($ssh, $redis_host, $redis_port);
$redis = new Redis();
$redis->connect('127.0.0.1', $redis_port);
$redis->auth($redis_auth);// 使用 Redis
$redis->set('foo', 'bar');
echo $redis->get('foo');// 关闭 Redis 连接
$redis->close();// 关闭 SSH 连接
ssh2_exec($ssh, 'echo "done"');
ssh2_exec($ssh, 'exit');
?>

以上代码中,首先通过 SSH 连接到 Redis 服务器,然后使用 Redis 扩展连接到 Redis 服务器。可以像使用本地 Redis 一样使用 $redis 对象来进行 Redis 操作。

需要注意的是,SSH 连接和 Redis 连接都需要进行关闭,可以使用 ssh2_exec() 和 $redis->close() 方法来关闭连接。

php 通过ssh 证书方式连接到redis服务器

要通过 SSH 证书方式连接到 Redis 服务器,可以使用 PHP 的 ssh2 扩展和 Redis 扩展。

首先,需要使用 ssh-keygen 命令生成 SSH 密钥对。可以使用以下命令生成密钥对:

ssh-keygen -t rsa -b 2048 -f mykey

其中,-t 参数指定密钥类型为 RSA,-b 参数指定密钥长度为 2048 位,-f 参数指定密钥文件名为 mykey

生成密钥对后,需要将公钥添加到 Redis 服务器的 authorized_keys 文件中,以允许通过 SSH 证书方式连接。可以使用以下命令将公钥添加到 authorized_keys 文件中:

cat mykey.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

其中,mykey.pub 是公钥的文件名,user@server 是 Redis 服务器的用户名和 IP 地址。

然后,在 PHP 中使用以下代码连接到 Redis 服务器:

<?php
// SSH 连接参数
$ssh_host = 'ssh_host';
$ssh_port = 22;
$ssh_user = 'ssh_user';
$ssh_key = 'mykey';// Redis 连接参数
$redis_host = '127.0.0.1';
$redis_port = 6379;
$redis_auth = 'redis_auth';// SSH 连接
$key = new \ssh2\RSA();
$key->load(file_get_contents($ssh_key));
$ssh = ssh2_connect($ssh_host, $ssh_port);
ssh2_auth_pubkey_file($ssh, $ssh_user, $ssh_key . '.pub', $key);// Redis 连接
$redis_sock = ssh2_tunnel($ssh, $redis_host, $redis_port);
$redis = new Redis();
$redis->connect('127.0.0.1', $redis_port);
$redis->auth($redis_auth);// 使用 Redis
$redis->set('foo', 'bar');
echo $redis->get('foo');// 关闭 Redis 连接
$redis->close();// 关闭 SSH 连接
ssh2_exec($ssh, 'echo "done"');
ssh2_exec($ssh, 'exit');
?>

以上代码中,首先加载私钥文件,并通过 SSH 连接到 Redis 服务器。然后使用 Redis 扩展连接到 Redis 服务器。可以像使用本地 Redis 一样使用 $redis 对象来进行 Redis 操作。

需要注意的是,SSH 连接和 Redis 连接都需要进行关闭,可以使用 ssh2_exec() 和 $redis->close() 方法来关闭连接。

后续补充

...

3.问题/补充

1. 通过ssh方式连接到redis服务器

服务器自身上的redis server

另外独立的服务器的redis server


后续补充

...

http://www.lryc.cn/news/189892.html

相关文章:

  • IDEA的使用(四)创建不同类型的工程(IntelliJ IDEA 2022.1.3版本)
  • Mac上brew切换国内源【极简方案】
  • 计算机网络面试常问问题--保研及考研复试
  • elasticsearch 8.5.3问题记录
  • 【Ubuntu虚拟机】
  • 江苏服务器有哪些特点
  • acwing算法基础之基础算法--求逆序对的数目
  • uni-app 实现考勤打卡功能
  • Jenkins发布失败记录
  • 【算法|双指针系列No.6】leetcode LCR 179. 查找总价格为目标值的两个商品
  • python flask接口字段存在性校验函数(http接口字段校验)(返回提示缺少的字段信息)validate_fields()
  • Linux文件-内存映射mmap
  • linux 查看当前正在运行的端口和监听的端口的工具及命令
  • 保护互联网数据安全:关键方法与最佳实践
  • 分布式数据库HBase(林子雨慕课课程)
  • 矩阵求导的本质与分子布局、分母布局的本质
  • 【广州华锐互动】VR建筑施工事故体验:提高工人安全意识和责任感
  • HSRP热备份路由器协议的解析和配置
  • kotlin实现ArrayDeque
  • java时间格式化
  • ArduPilot开源飞控之AP_Baro_SITL
  • 基于Java的病人跟踪治疗管理系统设计与实现(源码+lw+部署文档+讲解等)
  • RCD吸收电路的工作原理及参数计算方法详解
  • leetcode做题笔记169. 多数元素
  • FATFS f_printf 如何支持写入浮点数据。
  • postman忘记密码提交没响应
  • 初学vue,想自己找个中长期小型项目练练手,应该做什么?
  • 【牛客面试必刷TOP101】Day11.BM63 跳台阶和 BM67 不同路径的数目(一)
  • [NOIP 2022] 建造军营 题解
  • 射频识别技术(RFID)在智能制造模具管理中的应用