Php - Pdo SSH 隧道

2023-12-31

现在我正在创建一个 ssh 隧道,这样我就可以连接到我的远程数据库,但由于某种原因连接仍然拒绝... 我的脚本:

try {

    $host = 'remote host';
    $sshuser = 'ssh user';
    $sshpass = 'ssh password';
    $dbuser = 'db user';
    $dbpass = 'db user';
    $dbname = 'db name';

    shell_exec("ssh -p$sshpass ssh -o StrictHostKeyChecking=no -f -L 3307:127.0.0.1:3306 $sshuser@$host");

    $dbh = new PDO('mysql:host=127.0.0.1;port=3307;dbname=' .$dbname. '', $dbuser, $dbpass);

    $sth = $dbh->prepare("SELECT * from table");

    $sth->execute();

    $result = $sth->fetchAll();

    print_r ($result);

    shell_exec("kill $(ssh-pid)");

    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

结果我得到:

Error!: SQLSTATE[HY000] [1130] Host 'host' is not allowed to connect to this MySQL server

这对我有用

虚拟机和VPN

如果您有虚拟机,则首先通过 ssh 连接到该虚拟机。
如果您遇到 DNS 问题,请使用 google dns:sudo nano /etc/resolv.conf Change 127… to 8.8.8.8

我的隧道需要我通过VPN连接,我使用openvpn,你可以像这样安装它:

sudo yum -y install openvpn

连接到VPN 从 VPN 提供商下载 myconfig.ovpn

sudo openvpn --config myconfig.ovpn 

SSH Key

将您的密钥上传到虚拟机 修复权限

sudo chmod 600 ~/.ssh/my-private-ssh-key

端口转发

ssh -f -N -i ~/.ssh/my-private-ssh-key your[email protected] /cdn-cgi/l/email-protection -L 3307:yourmysqldbdomain.com:3306

-f将在后台运行它
-L将转发127.0.0.1:3307指向yourmysqldbdomain.com:3306

请注意,使用localhost在我的情况下不起作用,必须使用127.0.0.1为当前虚拟机本地ip。

你可以删除-f and -L条件并添加-v进行一些调试,就像这样

ssh -v -i ~/.ssh/my-private-ssh-key [email protected] /cdn-cgi/l/email-protection

与mysql连接

mysql -u yourdbusername -h 127.0.0.1 -P 3307 -p

与 PHP PDO 连接

$db_server = '127.0.0.1';
$db_port = '3307';
$db_name = 'yourdbname';
$db_user = 'yourdbusername';
$db_pass = 'yourdbpassword';

$dsn = 'mysql:host='.$db_server.';dbname='.$db_name.';port='.$db_port;
$driver_options = [
   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
   PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
   PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
   PDO::ATTR_TIMEOUT => 5, // timeout in seconds
];               
$pdo = new PDO($dsn, $db_user, $db_pass, $driver_options);

删除端口转发

完成后,您可以通过查找 id 来终止该进程,如下所示:

ps aux | grep ssh
sudo kill 123123 // replace 123123 with the id of the process
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Php - Pdo SSH 隧道 的相关文章

  • 如何在使用 Piwik 进行分析的页面上显示点击/访问计数器

    我想在主页上显示当天的访问量 该页面由 Piwik 跟踪 如何将 API 与 PHP 结合使用来获取今天的 唯一 访问量和点击量 以便我可以将它们显示在页面上的某个位置 result file get contents http mysit
  • php同时上传最大文件数

    我正在使用标签 用于使用 php 上传多个文件 我注意到 如果我选择超过 20 个文件 php 只会上传前 20 个文件 有没有办法扩大这个限制 这个限制被添加到PHP 5 2 12 https www php net releases 5
  • PHP如何计算时差? [复制]

    这个问题在这里已经有答案了 我必须计算日期时间差 如何在 PHP 中做到这一点 我需要准确的小时 分钟和秒 有人有这方面的脚本吗 Use the diff 方法 http www php net manual en datetime dif
  • 为什么 PHP 字符串连接运算符是点 (.)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 如何将UTF-8编码的汉字从MySql正确导出到SQL

    过去三天我们正在与严重的问题作斗争 我们从PhpmyAdmin导出MySql数据库文件 数据库条目中写入的数据是带有UTF 8字符集的中文 导出后将其转换为拉丁字符集 现在我们正在将此数据库SQl文件导入到其他主机 我们在UTF 8和排序规
  • Laravel 强制 SSL 给出“此网页有重定向循环”

    我正在使用 Laravel 4 1 并且想要在整个站点范围内强制使用 SSL 我的应用程序部署在 Heroku 上 将其添加到任一App before或作为过滤器 if Request secure return Redirect secu
  • 使用 Poedit 创建 POT 文件

    我正在拼命地尝试为我的 php 新应用程序创建一个目录 in 1 我创建了一个文件 trans php 其中放置了所有要翻译的值 例如 这是我的文件 2 我打开Poedit 在 路径 中这是我输入的内容 见图 然后我保存文件 php 的相同
  • 如何获取wordpress中文件的本地路径

    由于在wordpress中 上传的文件 图像以3种不同的大小存储 从而占用内存 我有一个代码可以根据给定图像的 URL 来调整图像的大小 调整大小的代码是 img wp get image editor image url if is wp
  • 在 Woocommerce 的单个产品页面中添加产品注释字段

    我要创建定制订单备注 in 单品用户的详细信息页面 这个可以使用 php 来完成 无需插件 我已附上屏幕截图和网站 URL 以供参考 已尝试使用此代码function php它在结账页面上工作 而不是在产品信息页 任何人都可以帮助我实现这一
  • JWT 中的注销不起作用

    我是 Laravel 的新手 我安装了 JWT 并登录 所以它工作并生成了一个令牌 当我在邮递员中注销时它返回 true 但一次又一次它返回 true 和 auth gt 用户 注销后始终返回用户 这是我的代码 public functio
  • 高级自定义字段 - WordPress

    在使用时自定义字段插件 我无法让它返回任何数据 我创建了一个名为的字段组book cover thumbnail其中有一篇文章链接到它 谁能明白为什么下面的代码不起作用 img src 我完全没有收到任何错误 没有空格 确保您 a 使用以下
  • Laravel 9.x 登录应用程序时目标类不存在错误

    尝试为管理面板制作一个登录应用程序以轻松编辑网站的其余部分 我有一个名为AuthController它执行多种操作 例如登录 注销 我决定只使用一个 而不是使用两个不同的控制器 当我去 login在我的浏览器上它返回Target class
  • WooCommerce - 按下按钮时更新所有产品描述(全站点)

    我一直在使用以下代码 希望能够创建一个按钮 按下它 然后我网站上的所有描述都会自动生成 梦想 我的问题 为什么我的代码没有按预期更新所有产品 到目前为止 我有以下代码 虽然它在一定程度上可以工作 但当按钮位于产品页面上时无法正常工作 它将更
  • Doctrine QueryBuilder 重用部件

    我想计算所有符合我的条件的字段 并使用学说查询生成器逐页获取它们 我生成的查询取决于我的过滤器字段 第一部分是计算记录 以便我可以计算页数 qb em gt createQueryBuilder qb gt select COUNT m i
  • Laravel Eloquent with()-> 返回 null

    我正在尝试使用 Eloquent 来获取具有以下功能的特定产品 brand id映射到a的列brands表 该brand数组返回空 这里有什么明显需要改变的地方吗 product Product with images gt with br
  • 如何将十进制转换为二进制并将其位值恢复到数组中?

    例如 result func 14 The result应该 array 1 1 1 0 如何实施func decbin http docs php net decbin会产生一个字符串二进制字符串 echo decbin 14 outpu
  • Drupal 模板/主题资源或建议?

    我有兴趣为我正在开发的 Drupal 网站创建自定义主题 我是 Drupal 的新手 但是我在处理构建主题 CSS PHP HTML 所需的基本概念方面拥有相当多的经验 所以 我的问题是 我从哪里开始 有创建 Drupal 主题的规范指南吗
  • 如何使用多个分隔符拆分列表?

    基本上 我想在文本区域中输入文本 然后使用它们 例如 variable1 variable2 variable3 variable1 variable2 variable3 variable1 variable2 variable3 我知道
  • SplFileObject + LimitIterator + 偏移量

    我有两行数据文件 两行仅用于我的示例 实际上 该文件可以包含数百万行 并且我使用 SplFileObject 和 LimitIterator 进行偏移 但这种组合在某些情况下会有奇怪的行为 offset 0 file new SplFile

随机推荐