feat(sshclient): add a promise-first SSH client with secure host verification and improve SSH key/config handling

This commit is contained in:
2026-05-02 09:43:21 +00:00
parent 4a97d63c04
commit 3b20db79d0
17 changed files with 1332 additions and 170 deletions
+3 -41
View File
@@ -32,9 +32,9 @@ importers:
minimatch:
specifier: ^10.2.5
version: 10.2.5
node-ssh:
specifier: ^13.2.1
version: 13.2.1
ssh2:
specifier: ^1.17.0
version: 1.17.0
devDependencies:
'@git.zone/tsbuild':
specifier: ^4.4.0
@@ -2215,10 +2215,6 @@ packages:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
is-stream@4.0.1:
resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
engines: {node: '>=18'}
@@ -2563,10 +2559,6 @@ packages:
resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==}
engines: {node: '>= 6.13.0'}
node-ssh@13.2.1:
resolution: {integrity: sha512-rfl4GWMygQfzlExPkQ2LWyya5n2jOBm5vhEnup+4mdw7tQhNpJWbP5ldr09Jfj93k5SfY5lxcn8od5qrQ/6mBg==}
engines: {node: '>= 10'}
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -2840,14 +2832,6 @@ packages:
resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
engines: {node: '>=11.0.0'}
sb-promise-queue@2.1.1:
resolution: {integrity: sha512-qXfdcJQMxMljxmPprn4Q4hl3pJmoljSCzUvvEBa9Kscewnv56n0KqrO6yWSrGLOL9E021wcGdPa39CHGKA6G0w==}
engines: {node: '>= 8'}
sb-scandir@3.1.1:
resolution: {integrity: sha512-Q5xiQMtoragW9z8YsVYTAZcew+cRzdVBefPbb9theaIKw6cBo34WonP9qOCTKgyAmn/Ch5gmtAxT/krUgMILpA==}
engines: {node: '>= 8'}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -2873,9 +2857,6 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shell-escape@0.2.0:
resolution: {integrity: sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==}
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -6435,8 +6416,6 @@ snapshots:
is-plain-obj@4.1.0: {}
is-stream@2.0.1: {}
is-stream@4.0.1: {}
is-unicode-supported@2.1.0: {}
@@ -6988,15 +6967,6 @@ snapshots:
node-forge@1.4.0: {}
node-ssh@13.2.1:
dependencies:
is-stream: 2.0.1
make-dir: 3.1.0
sb-promise-queue: 2.1.1
sb-scandir: 3.1.1
shell-escape: 0.2.0
ssh2: 1.17.0
object-keys@1.1.1: {}
oblivious-set@2.0.0: {}
@@ -7319,12 +7289,6 @@ snapshots:
sax@1.6.0: {}
sb-promise-queue@2.1.1: {}
sb-scandir@3.1.1:
dependencies:
sb-promise-queue: 2.1.1
semver@6.3.1: {}
semver@7.7.4: {}
@@ -7375,8 +7339,6 @@ snapshots:
shebang-regex@3.0.0: {}
shell-escape@0.2.0: {}
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}