Laravel8中laravelcollective/remote能否创建动态SSH连接并自定义端口
问题解答
关于是否可以无需维护
config/remote.php,直接用数据库读取的配置创建SSH连接:
可以,laravelcollective/remote提供的SSH::connect()方法本身就支持传入自定义配置数组创建连接,完全不需要依赖静态配置文件,符合你动态管理站点SSH凭证的需求。关于自定义SSH端口的设置方法:
你只需要在构造的配置数组中新增port字段,传入你服务器对应的SSH端口即可,扩展包底层会自动读取该配置覆盖默认的22端口,示例代码如下:
// 从数据库读取SSH凭证后组装配置数组 $config = [ 'host' => '123.123.123.123', 'port' => 22345, // 此处填写你的自定义SSH端口 'username' => 'the-user', 'password' => 'a-password', // 若使用密钥认证,可替换为以下配置 // 'key' => '/path/to/private/key', // 'keyphrase' => 'your-key-passphrase', // 密钥无口令可省略该字段 // 'timeout' => 20, // 可选自定义连接超时时间,单位秒 ]; SSH::connect($config)->run([ 'cd /var/www', 'git pull origin master' ], function($line) { echo $line.PHP_EOL; });
补充建议
- 存储在数据库中的SSH凭证建议使用Laravel自带的加密功能做加密存储,读取配置时再解密,避免凭证泄露风险。
- 如果需要对同一个服务器多次执行命令,可以将
SSH::connect($config)返回的连接实例暂存复用,减少重复握手的性能开销。
内容的提问来源于stack exchange,提问作者ThurstonLevi
相关产品推荐
相关产品推荐

