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

Laravel 5.8 使用laravelcollective/remote动态配置SSH执行命令方案咨询

结论

你完全可以继续使用laravelcollective/remote ~5.8扩展包实现动态SSH连接,不需要更换技术方案,该扩展本身支持运行时动态修改配置,无需硬编码到config/remote.php文件中。

实现方案

你可以通过Laravel的Config门面在当前请求生命周期内临时写入连接配置,调用时指定你自定义的临时连接名即可,参考代码如下:

// 从表单获取提交的SSH连接参数
$sshConfig = [
    'host' => request()->input('host'),
    'username' => request()->input('username'),
    'password' => request()->input('password'),
    'key' => '',
    'keytext' => '',
    'keyphrase' => '',
    'agent' => '',
    'timeout' => 10,
];

// 动态写入配置,自定义连接名为dynamic
config(['remote.connections.dynamic' => $sshConfig]);

// 调用动态配置的连接执行命令
$commands = ['cd /home/code && ./runMe.sh'];
SSH::into('dynamic')->run($commands, function($line) {
    echo $line . PHP_EOL;
});
注意事项
  • 动态配置仅在当前请求生效,不会修改磁盘上的config/remote.php文件,每次需要连接时重新传入表单参数配置即可。
  • 该方案存在较高安全风险:允许用户提交任意SSH凭证并执行服务器命令可能被恶意利用,建议根据业务场景增加IP白名单、命令过滤、操作审计等安全措施,同时不要将用户提交的敏感凭证写入日志、缓存等持久化存储。
  • 如果你后续需要支持密钥登录,直接将表单提交的密钥内容赋值给配置的keytext字段即可,无需调整其他逻辑。
可选替代方案

如果你的业务有更复杂的SSH操作需求(比如大文件SFTP传输、会话保持、多命令交互等),可以直接使用该扩展底层依赖的phpseclib/phpseclib库,自由度更高,但基础命令执行场景下当前扩展完全可以满足需求,不需要额外替换。

内容的提问来源于stack exchange,提问作者code-8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:39:00