From c24a040c19cacafc79228d7a7649af93837d94a1 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Fri, 5 Sep 2025 21:16:09 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20ssh=20=E5=A2=9E=E5=8A=A0=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=96=AD=E5=BC=80=E8=BF=9E=E6=8E=A5=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A410=E5=88=86=E9=92=9F=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/plugins/plugin-lib/src/ssh/ssh-access.ts | 9 +++++++++ packages/plugins/plugin-lib/src/ssh/ssh.ts | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts index 15bd6fa8..3af65770 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts @@ -86,6 +86,15 @@ export class SshAccess extends BaseAccess { }) socksProxy!: string; + @AccessInput({ + title: "超时时间", + helper: "执行命令的超时时间,单位秒,默认10分钟", + component: { + name: "a-input-number", + }, + }) + timeout: number; + @AccessInput({ title: "是否Windows", helper: "如果是Windows主机,请勾选此项\n并且需要windows[安装OpenSSH](https://certd.docmirror.cn/guide/use/host/windows.html)", diff --git a/packages/plugins/plugin-lib/src/ssh/ssh.ts b/packages/plugins/plugin-lib/src/ssh/ssh.ts index d148d8f1..7e6e14aa 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh.ts @@ -588,10 +588,15 @@ export class SshClient { } throw e; } - + let timeoutId = null; try { + timeoutId = setTimeout(() => { + this.logger.info("执行超时,断开连接"); + conn.end(); + }, 1000 * (connectConf.timeout || 600)); return await callable(conn); } finally { + clearTimeout(timeoutId); conn.end(); } }