You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH隧道连接Laravel与远程PostgreSQL数据库?是否有可用包?

通过SSH隧道实现Laravel连接远程PostgreSQL的方法及相关扩展

一、手动建立SSH隧道并配置Laravel

1. 创建本地SSH端口转发

运行以下命令,将本地端口转发到远程PostgreSQL服务端口(示例中本地用5433,避免与本地PostgreSQL默认的5432冲突):

ssh -L 5433:localhost:5432 ssh_user@remote_server_ip -p ssh_port

参数说明:

  • -L:指定本地端口转发规则,格式为本地端口:远程数据库主机:远程数据库端口
  • ssh_user@remote_server_ip:远程SSH服务器的用户名和IP
  • -p ssh_port:远程SSH端口,默认22可省略

如需后台运行隧道,添加-fN参数:

ssh -fN -L 5433:localhost:5432 ssh_user@remote_server_ip

2. 配置Laravel数据库连接

修改项目根目录下的.env文件,更新PostgreSQL配置:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5433
DB_DATABASE=your_remote_db_name
DB_USERNAME=remote_db_user
DB_PASSWORD=remote_db_password

同步config/database.php中的pgsql连接配置(确保与.env一致):

'pgsql' => [
    'driver' => 'pgsql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '5433'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'search_path' => 'public',
    'sslmode' => 'prefer',
],

测试连接:执行php artisan migrate:status或编写简单查询脚本验证是否能正常访问远程数据库。

二、自动管理SSH隧道的Laravel扩展包

无需手动执行SSH命令,直接通过Laravel配置即可完成带SSH隧道的数据库连接,推荐以下扩展:

1. laravel-ssh-database

该扩展支持在数据库配置中直接嵌入SSH参数,自动建立隧道。配置示例:

'pgsql' => [
    // ... 原有数据库配置
    'ssh' => [
        'host' => 'remote_server_ip',
        'port' => 22,
        'username' => 'ssh_user',
        'password' => 'ssh_password', // 可选,密钥登录时可省略
        'key' => storage_path('id_rsa'), // 密钥文件路径,优先于密码登录
    ],
],

配置完成后,Laravel会在初始化数据库连接时自动创建并维护SSH隧道。

2. spatie/laravel-ssh(自定义场景)

若需要更灵活的SSH控制(比如预执行命令、多隧道管理),可使用该包配合自定义逻辑实现。例如在服务提供者中监听数据库连接事件,先建立隧道再初始化数据库连接,适合有定制需求的场景。

注意事项

  • 确保远程SSH服务器端口对外开放,本地机器可正常访问该服务器
  • 使用密钥登录时,需确保密钥文件权限为600,避免SSH连接失败
  • 安装扩展时需匹配Laravel版本,优先选择维护状态活跃的包版本

内容的提问来源于stack exchange,提问作者Yogendra - eCommerce Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:52:45