{"_id":"@fangjunjie/ssh-mcp-server","_rev":"39-bcafb2bd613a398850585345885670ce","name":"@fangjunjie/ssh-mcp-server","dist-tags":{"latest":"1.11.0"},"versions":{"1.0.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"690fb0d1550442781d21c4b8bf01edd5e8a00311","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.0.tgz","fileCount":4,"integrity":"sha512-edWAjG8lfKrwbxQ4YDSv7/RJ4E9EmSyEztqw4BhVf+04xIj728WmJHMRXD4oq11M8WpHgjWp1TIY0duNcsbFBQ==","signatures":[{"sig":"MEYCIQDUuUvyxb7AgenOgoqbE9in0gth+Wstra3C1d0lrLjMIQIhAKn/jcCzUKPhDiSOQhgFkzkGRIXjEzlfMlBu8Iel4ssf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425},"main":"build/index.js","type":"module","gitHead":"18c95434a1669aeb4472067056114e130b79901e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.0_1744791498733_0.07899609463954071","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.1","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.1","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"b16a01877a275797de96370b57301430022eb638","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.1.tgz","fileCount":4,"integrity":"sha512-PaucjBZizTWVyrCBc0NG203WqZE/wPk9Wn2t6QP3L9VLrANYfN32lsUFNG4RQiUDrFITfbUFjQwmh9mKyELfmg==","signatures":[{"sig":"MEUCIHq3r6IU04RLcx8SKdiX9IU34wWHELagkN5CvABR21z5AiEA8F8alrHccbxV21MjaDPkVLHKJErBig9OlGMIsAUH4p4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6953},"main":"build/index.js","type":"module","gitHead":"5b92fe7b5ecccef3ebadab1a01bd050ce7ed6f8d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.1_1744793353131_0.7415952469826661","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.2","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.2","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"170d86baa326aec441403f4a4933b31fdbd76f4d","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.2.tgz","fileCount":4,"integrity":"sha512-qXM1cKRUexVd8lpiMkaU2Uf2Lws/yUUWw22Zk8Z2NTOA3uf5wPmOjP9eBH63oa/pYoya5at26sHJAlWFGUcrPA==","signatures":[{"sig":"MEYCIQCSqFjRJJWdw16bfYGA43Y05PYMNGr0YaH940qsQtztJAIhAOsL4yY+d27DYiS2o4F3yU8BTwJmXEYCRLjC8k8IZlSL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11451},"main":"build/index.js","type":"module","gitHead":"5131d87a7f99038a53a467039e75efd949cd1964","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.2_1744794805707_0.053084878895983234","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.3","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.3","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"f0773c9db669a7ed1572fc56eef38f054e8856e4","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.3.tgz","fileCount":4,"integrity":"sha512-BbvlH60jqSQztQOEmKJyEf9t7GnevP6Fs025ozqx+jy7G8lUCaKv4NA6ZzyDvplVzrnV+TLuO4hZCTbAMI6Wnw==","signatures":[{"sig":"MEUCIQCxm5pr2sqkCiNNB/Ag5tA2z8oqkuTqCXCWvGuWNhay7QIgDDCv+40N2GcesD7Swnv5c7qFTvDauWGoXQdAERDd+b4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13112},"main":"build/index.js","type":"module","gitHead":"4a90c8e46f6ddb4398982ae333416fe2b6352b85","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.3_1744874898513_0.6960183649628067","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.4","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.4","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"9ea9bb435a7042cf7b3807d8d350a9435dbd0e5d","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.4.tgz","fileCount":10,"integrity":"sha512-SNQI0ikN2p8bWdKsfk4Jt/HcbATap6fdgg5bjAoSPRVpRMyP/QOWT9XjtuxYkNJuGRwF/1AsjE+JfbAdYANHmQ==","signatures":[{"sig":"MEUCIGUZrRB9ET8L/w12kKXcLGgcrD1T8AF/ll6nUf9wUxSHAiEA4XMn1Jd1o7kxxo1V40j5tfq7wYLyycnQvM+tYUedFZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15183},"main":"build/index.js","type":"module","gitHead":"d29a3a870874251c45375ab9baf754c0353c6486","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.4_1744880684710_0.9136969522549667","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.5","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.5","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"7b8df99d7c1794c7e9f14df94e407ca1cbb5c012","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.5.tgz","fileCount":10,"integrity":"sha512-tDUiSyQmJotXON512VVCU/PrQQZzaYa8UAGvWdxFRoq5sKIUsZvACEdCxxR2mqtETTePu/gpprFMSHXb3fQtDA==","signatures":[{"sig":"MEYCIQDUHC0n4bF9GOvS3m0pZZixcqW7uyccykbtxNTqrL6tmAIhAP2vG7w3qcshW3s2SZpzryVGtKGkfFl7L1Kiwu+6hDbn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17244},"main":"build/index.js","type":"module","gitHead":"cf7a3293a5d2afa3efc1e7d21c1b51787bc654f9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.5_1744886913136_0.4393469518392521","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.6","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.6","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"c8ae64491109b04aaccd7daddcc090c877fa212e","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.6.tgz","fileCount":14,"integrity":"sha512-kqGrxOwD2RC2lzZoUtUv9/F4M4zSOE4qEaXkAr2gsp6Y/TW4rhfeAvq0DY9Mgsl1ox/Kb9AQ1kine+cL6HnjxA==","signatures":[{"sig":"MEUCIQD8hdpZz7OXcSZcoS9zodvkTHq3r+KmR3MSlH/NOdapJwIgQacw1S5n9rZA79c9BO7o7FbfLVjY93z7c+Dw1Fcua2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18249},"main":"build/index.js","type":"module","gitHead":"a58209897f0c1518e544dedd01e1f9c316a16207","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.6_1744958307403_0.17195821140343392","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.7","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.7","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"05df4558107fe65a1f5fde047f1b9d47786e9acf","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.7.tgz","fileCount":16,"integrity":"sha512-TvUMS0zd8uEKPcfjuwYZmcx2n/8GiqQ7lXJ/MGVuVxBcwme86GNwmetbnPtp9tb+657ScqavKX3/Wf/g+xMwtw==","signatures":[{"sig":"MEYCIQDQMnG8flF99b6mEhcb+ExGt0WbAixZn2Nrba8TrCrO6QIhAJfstufVMqcrSNGQAx3q+pVj0tVNg6vq6Hb1x8sVkSOp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22253},"main":"build/index.js","type":"module","gitHead":"24f72f8b1740a12cc52dcd1a2e48f5a9e6e782e7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.7_1744962699080_0.15734728184986913","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@fangjunjie/ssh-mcp-server","version":"1.0.8","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.0.8","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"0f959c95744a05153154bc567f1b7698d8272d1a","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.0.8.tgz","fileCount":17,"integrity":"sha512-XJ3HcSfAz0V1xezJym4CH6IcYKqPrxtSKW3YXdhu6lUVMug3s7HD7wBwpJWplH4QIlDF+dlWBW/4ZpSJKIoiTQ==","signatures":[{"sig":"MEUCIAD2ZNbSL31UZ3eJwr+yvXCofccUCqvg2y3tghbqijNiAiEAsDA6xR6Tug7FAqm0Fvgw7oo9taV75VgzGcVV8ZNWe1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27950},"main":"build/index.js","type":"module","gitHead":"2a9b70217db4dce102fe2d2f1935595df7d38c07","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"基于 SSH 的 MCP 服务器","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.0.8_1745893120449_0.8603704726726342","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.1.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.1.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"70c735be31195aa93674839b3bcfb915a9ac8a98","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.1.0.tgz","fileCount":16,"integrity":"sha512-60Wfgbq2bVa99qnh2fdV1m1ftVU2MN9jLJekOJQBvNYVub+qPd3peFSAe1mV7+vbvljDP6lOHy3tn/MQzoEPVw==","signatures":[{"sig":"MEYCIQCZ6inazPGdRmgw/sUGFNH01dXVTk91N8zjCz5IqtuXIwIhAICLQkgWCoRZfDYEOZ66gNrmKsScqnmuuMMOmrKhRmQj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23948},"main":"build/index.js","type":"module","gitHead":"2249dde19d4ac0cdbd1e7dd41109e5b70497d38e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.1.0_1745894591778_0.37076687454052615","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"90024037d498327d9a0f9be5f19bf1a54625ec2d","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.0.tgz","fileCount":17,"integrity":"sha512-P8jLSNNEiBR0BtI/Lul7EP8upWRsgeesax2PrkXkBthvc3yNplL2Zc0+8pBgOt5cUduPXamBvd2+WvKEyqAxyA==","signatures":[{"sig":"MEQCIGIXUOAncPUkqklHWMFVmyXeADwkaU223PaUIpFX1B/OAiB6WEMzyw1+o5wqefVhtGpNAJ6yyRoCKzxBaqT3raqzMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33945},"main":"build/index.js","type":"module","gitHead":"e3ea6dfdb3790f9d7ee9d8dec3433113feb1c3ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.0_1754967792370_0.9241831477877398","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.1","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.1","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"4c3f4edcbf5cb269a496b346c8d4dd8e7d57a147","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.1.tgz","fileCount":17,"integrity":"sha512-FQEWFXaxRLUU9P1dIqRmuakPEl8rifg36O1Rg2bRRc2u/5YPBh8HAt6UbQ/W8U/WszXP2FFxlo66Mqie6Y4RzA==","signatures":[{"sig":"MEUCIC5zh6izUl7AeLGFP3DDimYKAT3J/VqR1UAoGBU/Z1mjAiEA6u2onDF4zXQ/GJCbZ9O+4LGBLX6QmuiPQt4pugAvev4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36478},"main":"build/index.js","type":"module","gitHead":"002284552b57080003d4b926999a2797fe6d7bd1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.1_1754980159297_0.39100825206755796","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.2","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.2","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"8930f141dcf72944bce560e382a22c5b37e99aff","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.2.tgz","fileCount":16,"integrity":"sha512-fijn+f+plQARdWfYJMKfGdDLOGXzellR1mISJqvyB/hUgsncDH53FTd2kv2/ZT/nOEamYyWtSs9JzEGVWwjmXQ==","signatures":[{"sig":"MEQCIE3jiPkAAFT89Kzf0GVzBUhVwAwK2AoELVNZyYmEt1w+AiAnG5g/TcnO2o1JUagNgeFuuE3hMT4tKx68HoLsHbRHEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35720},"main":"build/index.js","type":"module","gitHead":"f4780fc3a8a44c94ca644e2467b835cba6cac41c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"^1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.2_1757470629528_0.3795861243271572","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.3","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.3","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"0814aaaa1dfe38dbfef0cd10dc2437074d42f07b","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.3.tgz","fileCount":16,"integrity":"sha512-lvL6nCAXShJeQqkKeyMHMu0dEmq0CCricOFp68aHd6/1h4Y/bEGkoYYJuPiDS2WAO1Ju6gp31XQkm9bHScR9vw==","signatures":[{"sig":"MEQCIHXX9VWkVLK3/F4gRjhI5GVUNBmfcazB5cva53dWgX9QAiAAxVuoIWzDdzE1w2RP3UxSkZRn/MhTKQxWUW3sJqlZ4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35719},"main":"build/index.js","type":"module","gitHead":"419268a068ad79de1ef5ceffe9418f2cea6d7ebb","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.3_1757554322412_0.3269678200309265","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.4","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.4","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"42aaa80219292ec96d634c8d1d7c4dbe4020042c","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.4.tgz","fileCount":17,"integrity":"sha512-RJLqQRim/pev2+D88GmRx6TWwGbC5M0wTyYPFfIP6gNRiBz0IlQFgpwmUgx4/lpinwesidYy1nW+rmpdD3nWSA==","signatures":[{"sig":"MEYCIQCFFeZkCzMHToX8p2u8WOOFJwc+KUAfyI7IzVzuCtNprgIhALPX/1l3LDnuKzd1UFkKY9LDBKCExzIX4FD+Sl/IaHzf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49379},"main":"build/index.js","type":"module","gitHead":"8a502dc0259326fe065750d16901757aebb1821e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.4_1764736074043_0.2737075788327574","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.5","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.5","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"6c88ed790aabd9fc178c2c89f4ad6eebc4c9ae35","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.5.tgz","fileCount":17,"integrity":"sha512-AL6YfBxordx+sqGg7WeT9qimm7r8fudGCazbRAZ6Fwy5aGAEQqICTX41RZKKTwNoJ8jww0TuZ6jO3smN60ro2Q==","signatures":[{"sig":"MEQCIHIjYc/REkMTE0AeiLm6uaJhAKFt6zWW9TI+CBaE1oFiAiAxBtJtaCmFXI5fCZcAjM/G3+HQjIdxo7JgZPzRjfRaMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49931},"main":"build/index.js","type":"module","gitHead":"213b93d0203d7b33c831808fe8e3f8ee0d4f193a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.5_1767856576006_0.9815302746113583","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.6","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.6","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"6f89b7822b6294fb8687bcf4f0bff7229b2c1a5b","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.6.tgz","fileCount":17,"integrity":"sha512-QC9+cl7i0cZ8QaP6wqw55Wy7Z+WACA5l/HJNAnH0Z3ws7i0sK+a24Np+Xo8TPR9Hzj2y/rnDen7L/QGCp/y8pw==","signatures":[{"sig":"MEUCIB0LFG1JUaBgebGSR3ubrwnqX1cPAXRr5U9mXBYbKX6hAiEAj/mpofc8uS1FGTwrO3+pdq9VJ8LjU1qSl2fXA7HvAvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50022},"main":"build/index.js","type":"module","gitHead":"acebcd6d469fb93ce01714fd0c5db220781340d1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.6_1769151022776_0.8424215796534136","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.7","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.7","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"428c8a88c403059b469afbb0381c728cc4f64724","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.7.tgz","fileCount":17,"integrity":"sha512-JHO5Ka3dfSrO+ISULNGDPTFG9b/N16gaf/3DTdpHk04yi4rVb6fPS61MKWlgQCiSXHryAxhyDre3lczf/D5wDw==","signatures":[{"sig":"MEUCIA6CfFDHUyCZca1A2IH4Df28gdSEfgU+gVmaTGguoMQUAiEAyIwn1ACl2OfmRFrgSy0R0z9xsffbGW8mM2ypT6Forlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56771},"main":"build/index.js","type":"module","gitHead":"139fe2a01b9c1e6b87caf979befb3f2931c82341","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.24.2","ssh2":"^1.16.0","socks":"^2.8.6","@modelcontextprotocol/sdk":"1.17.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.7_1769743323539_0.9595874194982017","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@fangjunjie/ssh-mcp-server","version":"1.2.8","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.2.8","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"6f823e7cd72a945725f77270867c6ae586074e59","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.2.8.tgz","fileCount":17,"integrity":"sha512-nt1DiXHnly2C6otwITk7dE9A2KPLNmqmFNAw61OaNnOcmmPvC13xyXPMfHAJ2B8PFA+Mpf169dm+9WC+g6xBAw==","signatures":[{"sig":"MEQCIAemiHTtlEkXlw470tmsjHmKAX3DfBbGwr6MpPOtdmEFAiBSjHv392NRK8sUQla6PaL3JcgitkQbIrGgKNMz/pULpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57033},"main":"build/index.js","type":"module","gitHead":"139fe2a01b9c1e6b87caf979befb3f2931c82341","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.2.8_1771899340177_0.29988655339016246","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.3.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.3.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"f36349a30fa23f7e5f3e7d73eab8892bb3469463","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.3.0.tgz","fileCount":18,"integrity":"sha512-/oJlAYF/1OFtbhPZnYzG+LWN3CR7cSfYGMEVMeREWzlYLV7xI7jSKoUq8Bh/kfqsfhR1GwY4uIufHtgVi70HOg==","signatures":[{"sig":"MEUCIQCzC75dONS8gjjuQAbHE0WxCsaWA/O3qmO6YaPFsfcrRgIgHJ6qlWSTdTNb0loyTgYnqrI7wcr3ZqWF8Ri+OL0oG9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67429},"main":"build/index.js","type":"module","gitHead":"f882e87212f554a3e966516998e29b16c4be3220","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.3.0_1773120974893_0.17553810658790558","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.4.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.4.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"c55c7564ec65c79ebbc5cc7ae88dfb3ef6e64608","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.4.0.tgz","fileCount":18,"integrity":"sha512-vV+bkUl1Ia+4OEWI8ebsdWOed5t2YIZaYNRuX9bu6htMTgOzQD/CpgnH0QqnUqqka81bfb5E3xYLjmFoYRVXqA==","signatures":[{"sig":"MEUCIGNY2NoVxEcBASb9krW4yxFI3K6PIQnRiLXizPTFLPW+AiEA+vDqbu68GC1dObx9SV20aUnL20wXU22+HJcxGI0+qTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68080},"main":"build/index.js","type":"module","gitHead":"759e52edf65267039a84cdff73ef0b35b5a52919","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.4.0_1773899489591_0.614220291245436","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.5.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.5.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"b15ed06a247908264c2cb3db338756aa2cc7b584","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.5.0.tgz","fileCount":18,"integrity":"sha512-7ZQbUNLgWEbXRw4DoZ3x3RmunaYqMZnm5+eHrFaQIqNAoWCf88IPdY9K9eE6juR22vyR2AA6oVobWVxW+m8w/g==","signatures":[{"sig":"MEYCIQDLJZHlkp0ylhP0Ag2ANHauvT0zBS1U9b4PWcJUWxwq8gIhAPF+7jA480GHFqF41JYU1vdfbsnG/STgkAqTG4vHMPSm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68182},"main":"build/index.js","type":"module","gitHead":"0d981bc3e08380760fb0c4858891a01b0c1cfca6","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.5.0_1774838474439_0.04103855307147475","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.6.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.6.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"12563c1e8e6cc9a336bec5e744d94aad2e71ef27","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.6.0.tgz","fileCount":19,"integrity":"sha512-XIZk6UsL5RMqzRb94ekENjn/TcZnUdKp8ELv3wnWLjYRJeWRFkZW966xa/9NFiUlMEbEpZ6S8wyhU4TxdbVT+w==","signatures":[{"sig":"MEUCIAlxCm4fjTmMJr2scNo3YMoPgDkTEsXQmpeU+ECuC+nXAiEA2iW85M3scTfbfvMlHdeqhOQM4TDJTGEfSP7kPEZrLtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75947},"main":"build/index.js","type":"module","gitHead":"52515d140f6777a77a57ab04930bce6bb7a11995","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.6.0_1775113224235_0.6985528702614203","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@fangjunjie/ssh-mcp-server","version":"1.6.1","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.6.1","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"79ba4cce7459aa621280605611283f4f60ca7a91","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.6.1.tgz","fileCount":19,"integrity":"sha512-JIXwxMDFFYNhQpXm1rnm7XkEJLKiw+vWeVt9djYsf14gCjuFb1IqfejP4/hp4tPRpTA3ZIM/E+tzJ+oKhHxDWA==","signatures":[{"sig":"MEYCIQDCEQ0oVCKtu7piR2hLZjBk+JS00huRohlyuJ7JOgW28wIhAPCwLF4AQba1f/xucCfVZrUd83aZaXVAXWRuWbdN3tiK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76652},"main":"build/index.js","type":"module","gitHead":"7ae55e117b61bd8acca7857ccd9ec694e819d073","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.6.1_1776048065553_0.6195140028010468","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.7.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.7.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"100c2384bdcdea362909a939df4c296fb3c4528c","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.7.0.tgz","fileCount":19,"integrity":"sha512-bL/6kaMRuJbfSC0tRdoyek2kw0Xg/U+3OGuXUcKOlJahB6zHEP4Oh9l2lQWmm+kDL7OT0r3I2WENq6Qzd+fQdw==","signatures":[{"sig":"MEUCIQDuu3P3il6bWM+DGQmmxuVqvekS5/E9khSXsZ4oKscC7wIgbGuVjhrMSRtLsIX9Qa/SlAuxYFqSNdaWs6u8jPUfURc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96161},"main":"build/index.js","type":"module","gitHead":"c621dc8ce96c506c3f5e62f41cd41d8e979c47e0","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.7.0_1778153535553_0.915830077006339","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"b92a774709e1e2ff49f217deadfb1f44b812d0f1","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.0.tgz","fileCount":19,"integrity":"sha512-Vtr0oItQl+EF5neiOFXY6BQbOpTNn70JT5JvFw1SunM0gmCZiAq3PHKB76szx7exsNfXP2BOrk7SOTvC7+Dddg==","signatures":[{"sig":"MEUCIQC6r5xWx9S5zH1IhF8wiTs9RPcFN9XgczaPNaSMXjvYFQIgXfN+50V1JPrnLQJFw/3ou9Q028FR2a0JtHs032Nd830=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103214},"main":"build/index.js","type":"module","gitHead":"df9cbc881761f32b44926cfbbc12a53b7e902047","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.0_1778812168021_0.7009686963784709","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.1","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.1","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"d031a5097bd4f0541cb2c0607b6f1c43adb678fd","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.1.tgz","fileCount":19,"integrity":"sha512-Em9bMtfQAnq6g8VZ+sbnyBbBBXnQ7p7OD0H3Rym5z82YTWOGhOAmWEY6gjhxkBThQ+fMkSSoffYomwvEZAUgSQ==","signatures":[{"sig":"MEQCIE7lmy0+GlJtMOaaf8c8PaPNW9MRBuOI5TqAi7XU8csAAiB9SQLLEPvJmutdAQFLvWX63HLYOK399oXzN30W+wDPdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104151},"main":"build/index.js","type":"module","gitHead":"df9cbc881761f32b44926cfbbc12a53b7e902047","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.1_1778814463689_0.7417083461208767","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.2","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.2","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"2ce045653b7a5c1c184d0948ee62ecbf6278a789","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.2.tgz","fileCount":19,"integrity":"sha512-54NHxvO7EnBdgnkCJtmMkBPGVfhpdcQLDSQf76iX/L00FAKFeawH47WIzWvzrZevJ1PP7W0xLvrXwZ/5ev+QlA==","signatures":[{"sig":"MEQCIDe+xiZfPBJ7bKvS5iqjCsYcS7wsIRHYSpo0io9LWQ1PAiBv44zPQ+84VeK0h1Ny+XL2VWEuO7jk0bQEQwnOsAHyCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109960},"main":"build/index.js","type":"module","gitHead":"fb5b0fc6d49b5771d67e6077b3056addf3d12a79","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.2_1779364631832_0.2617453266605332","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.3","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.3","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"9e067c91913a49a6cd84093800e140983f89c6f5","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.3.tgz","fileCount":19,"integrity":"sha512-1kFZIy0tSfFfTo6h8MXw8CxmV9Yi1XDHgAXkrlC73McOli4tPzFuRQdlF2PKFRdtksMGZS8l9SHdohetfwY8Dw==","signatures":[{"sig":"MEUCIFcVSahNhXQNcrMSNP7zP3mHItv0uRaN/opcrVa+FdiBAiEA7fvbSmPif4NT07kk0zVE29lcflyDgD6wv9w9+BGHGxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114967},"main":"build/index.js","type":"module","gitHead":"cad70c1f2398cf71233b0e86685e153be7c68805","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"_npmVersion":"10.9.2","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.3_1780019567365_0.09231804054682713","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.4","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.4","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"675d17d78473483fecffe78743b08a25ab3a4598","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.4.tgz","fileCount":19,"integrity":"sha512-I6SAGIc67S+mMhFPATjAT7zUwkQmJPCH56tVXNZhF/Mj79V1eRhK3w4CgRI02iBtBQKMx0DWVTL6t8OOFXDpRA==","signatures":[{"sig":"MEUCIHhAahgjnhuvIgyqLTFoIU9DhGdANOSIj6r/2FpwgPydAiEAj02rNF7WU/0Bz81tENGNqozUbMpv0EUdWqpbBaktxP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118705},"main":"build/index.js","type":"module","gitHead":"4942af319e6e13ecc8b042744bc96f08de035a75","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.4_1782178535740_0.13652590897542494","host":"s3://npm-registry-packages-npm-production"}},"1.8.5":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.5","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.5","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"f36b6c2edbdf59c5896df92c3a3ea7138c1abd8e","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.5.tgz","fileCount":19,"integrity":"sha512-dk9w1/zQ4FqsTaYlrj9RXiagLPGZoY2sv25m98qWopGjVHGxRUX1me0ELd+Vf7MwLw38eppKTknTyed8CwF+sw==","signatures":[{"sig":"MEQCICL3gSmwUY54ThM4NKTya3Ie1COK5MYNKBlriHGpMRzoAiBMAK+waYj4hiyaaz17c+W4IIOeWaubbCrI7OUDAjpQcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118997},"main":"build/index.js","type":"module","gitHead":"48c1f9bb20cbe2b8c09514158b2dd2cf2b4ef606","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.5_1784534755358_0.18166764728564488","host":"s3://npm-registry-packages-npm-production"}},"1.8.6":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.6","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.6","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"22430d9be5e65d62e069c8e9f94163a167db0a1f","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.6.tgz","fileCount":19,"integrity":"sha512-LFh1Wq+FWRXH7uddT7LsN0SSH7Dzea+x291Mzjz1PYWI088akQGo6EGiejqRiXaFJsTjCVfUIs7n7KR01pySBw==","signatures":[{"sig":"MEYCIQCmqjwIIHwnIjp/ibhDgplZevNnzFz3D+TIk0HAfYu4EwIhAPsg3SDI21jDry4llwxrz6JbDiJlJkuDTgPUuXbA2YI6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119292},"main":"build/index.js","type":"module","gitHead":"a00af9a500a3200dafc7f84d18bd03556ea4c865","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.6_1786436431491_0.6916102274411489","host":"s3://npm-registry-packages-npm-production"}},"1.8.7":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.7","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.7","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"ab4a9394e5acf4455b3f0fed5f2fdd44b11d61e4","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.7.tgz","fileCount":19,"integrity":"sha512-HRl6UqD1EuBy2oUKlezeGqmVH8ivEBU314nDWeuYvPuc2yWXzUAet+69NAzI0JaqyUc+so3+HE5d2sXma34g+Q==","signatures":[{"sig":"MEUCIAu9EpaWhbc0r3GHkjD3KhfNs/hlyRdZTXA94LNV0nNKAiEA9DCEBnuFFK462olt6bUVDZkvmXR3IvdguhwlDqTRTuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119419},"main":"build/index.js","type":"module","gitHead":"b65d12fbe3baac82a04231e7ff4dcafd9f84d456","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.7_1786436478581_0.41061848849264115","host":"s3://npm-registry-packages-npm-production"}},"1.8.8":{"name":"@fangjunjie/ssh-mcp-server","version":"1.8.8","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.8.8","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"d4adac77d05a2b947eb977ef32726811bd720ab6","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.8.8.tgz","fileCount":19,"integrity":"sha512-WnQ6SSLdhp8fSkPut5cPPyZvThseO7hlu4xNdlOc/TSBL70RzeVRUhdVY04rFwQieOnLUhYBnVbiAIeWfRCAdQ==","signatures":[{"sig":"MEQCIARbP6YcGHM9u7qOtKYjBvDZEwgr0tl3F16551bjS2WyAiAidHWfM4ZtL9HUXRHnSwP+XM4/+Bpv260arsr2/ix60A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127772},"main":"build/index.js","type":"module","gitHead":"91da9ae69d7f3367b37c61aedf0307e2c0f7be08","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.8.8_1786671293382_0.10655578668375898","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.9.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.9.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"b47f0c81f5b583723e7610acce9bbac7ec17a368","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.9.0.tgz","fileCount":19,"integrity":"sha512-7oAf+zK/z39KdUVtCuTl+fcSJi1UDpdJ81od2JGNLY6ugQ0TJrOL0QiXp1FvmYWuRjoXOX9DklRLV0GFlRRUCw==","signatures":[{"sig":"MEYCIQCBm11fkI1fZq8vq8f5pUZJKwhbbo3zpg1AmqI3bl7sAwIhAPxxIcOJvoTbcTiBQ5yUpohdz7H0GiPMgIsTyrL6BxMb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141268},"main":"build/index.js","type":"module","gitHead":"701fd87fea884a9c18b5f4cd6be7cef344b52667","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.9.0_1787017458292_0.5677815282718617","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@fangjunjie/ssh-mcp-server","version":"1.9.1","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.9.1","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"8598056660b88c507b2a1c09564519d5753b9fc2","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.9.1.tgz","fileCount":19,"integrity":"sha512-dGfayE5jfa3/2DipCIA9Hax2e6H2oCG3AHsDMVLielksZVrKuW5gJu1a0mtihutJDL+fBNFZqijclfTHu6BerA==","signatures":[{"sig":"MEYCIQD2JEbVeR8ZNmUwAeoWHqG6E4UADIDpNY6kGE1WbCyR8gIhAOdrz1LUIHt7Q/UUrhFrKp65KP4DNMKSQwOZQeCTW8bT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDQS+pvmIs9VPD8tdx6pQCc9/AkIVJam9wG7y+L8Y7w4AiBCmpE4MjPLG/t14WjPeHvkcg46jF9wjVRMkSjD5m+ftg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145696},"main":"build/index.js","type":"module","gitHead":"956c7d5cbac4408bfee1fbc0678d2cbd955cd0c2","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.9.1_1788490273126_0.7576247019148035","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@fangjunjie/ssh-mcp-server","version":"1.9.2","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.9.2","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"8d0346e286721d75f1a1c438fa4e418d49cdaf1e","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.9.2.tgz","fileCount":19,"integrity":"sha512-0xiM6n2d+MTbKfe+4hctwe7Q7WkNsN7R6PJ4tOk5cIFUMjbbPVif6SkHYxfNSQKT3tdo5R4KTF8PaBR1YzuDCA==","signatures":[{"sig":"MEQCIB1VHmKWNYRkqJRQ/g9rwOQL/P/Jptv6/W8aq0pdrglFAiBq9YGYBVjlbNFvYSw9YJk1+WamhddHy+JUXNu9Prl/rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCdzfCol5UUzXQSIgnKOSKqV/4H3bkVVc13bmSUa/AupgIhAN6AMEpdWmvStw/zHRLgX0VIdVaMHgNRAD68k9ZAO1AY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147424},"main":"build/index.js","type":"module","gitHead":"bd9d31962c72fbd1321225f85eb307cf33e53577","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.9.2_1788933337338_0.40981842346658004","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@fangjunjie/ssh-mcp-server","version":"1.10.0","keywords":["ssh","mcp","server","cli"],"author":{"name":"Junki"},"license":"ISC","_id":"@fangjunjie/ssh-mcp-server@1.10.0","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"homepage":"https://github.com/classfang/ssh-mcp-server#readme","bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"bin":{"ssh-mcp-server":"build/index.js"},"dist":{"shasum":"74266d9b5e154aaf8ba9d6561d82876398a7e1bc","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.10.0.tgz","fileCount":24,"integrity":"sha512-qXXn9lpP0gGJGLpyVo/RvQmniKQSz3txpDyxlTvfUYgHLIdEQk242p0DIoPbCsQNQsLOeerfJHtM7Hdsg+8YJw==","signatures":[{"sig":"MEYCIQC6JlW8IQXcEqqmeEY+Ct6/DFAveoieoWna6eQnLGMkOgIhAM8P4rf7sJd8XX56dhUCesTFU7ecQ3stDTNkMEA/hIBp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGMAjwUjNtpPJGtchMlT5nOz38PMSNDMoZjuKG5ysGkoAiEAm6uGPgLijRtdXwArUX83vFWzwosDDufLgCWFvGBA+Ak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193317},"main":"build/index.js","type":"module","gitHead":"7588cab17b562d5a592e53085a4aa5aaec25bf2b","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"tmp":"tmp/ssh-mcp-server_1.10.0_1791514469652_0.24206405093215322","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"_id":"@fangjunjie/ssh-mcp-server@1.11.0","bin":{"ssh-mcp-server":"build/index.js"},"bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"dist":{"shasum":"d33780184120620863d5a5229c16a7acb1827c23","tarball":"https://registry.npmjs.org/@fangjunjie/ssh-mcp-server/-/ssh-mcp-server-1.11.0.tgz","fileCount":25,"integrity":"sha512-3Yde9q+3w72ByoQLHccGQ7n9GzhNnZYdqbDr/mXnGPAnAU4tjHLgx5hsLIDebHhN4QW8pFigyXwlzv7eynPFiQ==","signatures":[{"sig":"MEQCIG0z4QBEsiaqa3feQqdM07ZBPmDR2YmochtRd/ti1iGLAiBLmn+P5Duq2tTthsHt9sRMmC4YXFk6gLVeWz2e3dvLCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDdqvg23VGrdSUIBAm1czh8FUXIere2KFNmZzQh1ACQ+gIhAKl9JqI+DERgCs1z4/OFHs7pvxADH2qkC7B8aDNwjVPi"}],"unpackedSize":212130},"main":"build/index.js","name":"@fangjunjie/ssh-mcp-server","type":"module","author":{"name":"Junki"},"gitHead":"ff97574651f6e1efe938797ba29f526c499c36a3","license":"ISC","scripts":{"test":"node scripts/run-tests.js","build":"node scripts/build.js","test:watch":"node --test --watch test/**/*.test.js","prepublishOnly":"npm run build"},"version":"1.11.0","_npmUser":{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"},"homepage":"https://github.com/classfang/ssh-mcp-server#readme","keywords":["ssh","mcp","server","cli"],"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","directories":{},"maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","ssh2":"^1.17.0","socks":"^2.8.7","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/ssh2":"^1.15.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ssh-mcp-server_1.11.0_1793773785744_0.3401100859813294"}}},"time":{"created":"2025-04-16T08:18:18.645Z","modified":"2026-11-04T06:29:46.060Z","1.0.0":"2025-04-16T08:18:18.946Z","1.0.1":"2025-04-16T08:49:13.291Z","1.0.2":"2025-04-16T09:13:25.877Z","1.0.3":"2025-04-17T07:28:18.747Z","1.0.4":"2025-04-17T09:04:44.863Z","1.0.5":"2025-04-17T10:48:33.343Z","1.0.6":"2025-04-18T06:38:27.578Z","1.0.7":"2025-04-18T07:51:39.246Z","1.0.8":"2025-04-29T02:18:40.656Z","1.1.0":"2025-04-29T02:43:11.941Z","1.2.0":"2025-08-12T03:03:12.535Z","1.2.1":"2025-08-12T06:29:19.449Z","1.2.2":"2025-09-10T02:17:09.725Z","1.2.3":"2025-09-11T01:32:02.660Z","1.2.4":"2025-12-03T04:27:54.246Z","1.2.5":"2026-01-08T07:16:16.174Z","1.2.6":"2026-01-23T06:50:22.924Z","1.2.7":"2026-01-30T03:22:03.688Z","1.2.8":"2026-02-24T02:15:40.316Z","1.3.0":"2026-03-10T05:36:15.068Z","1.4.0":"2026-03-19T05:51:29.741Z","1.5.0":"2026-03-30T02:41:14.586Z","1.6.0":"2026-04-02T07:00:24.397Z","1.6.1":"2026-04-13T02:41:05.717Z","1.7.0":"2026-05-07T11:32:15.715Z","1.8.0":"2026-05-15T02:29:28.193Z","1.8.1":"2026-05-15T03:07:43.832Z","1.8.2":"2026-05-21T11:57:11.979Z","1.8.3":"2026-05-29T01:52:47.538Z","1.8.4":"2026-06-23T01:35:35.873Z","1.8.5":"2026-07-20T08:05:55.498Z","1.8.6":"2026-08-11T08:20:31.672Z","1.8.7":"2026-08-11T08:21:18.735Z","1.8.8":"2026-08-14T01:34:53.526Z","1.9.0":"2026-08-18T01:44:18.436Z","1.9.1":"2026-09-04T02:51:13.224Z","1.9.2":"2026-09-09T05:55:37.418Z","1.10.0":"2026-10-09T02:54:29.736Z","1.11.0":"2026-11-04T06:29:45.838Z"},"bugs":{"url":"https://github.com/classfang/ssh-mcp-server/issues"},"author":{"name":"Junki"},"license":"ISC","homepage":"https://github.com/classfang/ssh-mcp-server#readme","keywords":["ssh","mcp","server","cli"],"repository":{"url":"git+https://github.com/classfang/ssh-mcp-server.git","type":"git"},"description":"SSH-based MCP Server (基于 SSH 的 MCP 服务器)","maintainers":[{"name":"fangjunjie","email":"fangjunjievip@hotmail.com"}],"readme":"<div align=\"center\">\n\n<img src=\"images/ssh-mcp-server-logo-v2.png\" alt=\"ssh-mcp-server logo\" width=\"220\">\n\n# ssh-mcp-server\n\n![NPM Version](https://img.shields.io/npm/v/%40fangjunjie%2Fssh-mcp-server?label=%40fangjunjie%2Fssh-mcp-server)\n![GitHub forks](https://img.shields.io/github/forks/classfang/ssh-mcp-server)\n![GitHub Repo stars](https://img.shields.io/github/stars/classfang/ssh-mcp-server)\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/classfang/ssh-mcp-server)\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-closed/classfang/ssh-mcp-server)\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr/classfang/ssh-mcp-server)\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr-closed/classfang/ssh-mcp-server)\n\n基于 SSH 的 MCP (Model Context Protocol) 服务器，允许通过 MCP 协议远程执行 SSH 命令。\n\n[English Document](README_EN.md) | 中文文档\n\n</div>\n\n## 📝 项目介绍\n\nssh-mcp-server 是一个桥接工具，可以让 AI 助手等支持 MCP 协议的应用通过标准化接口执行远程 SSH 命令。这使得 AI 助手能够安全地操作远程服务器，执行命令并获取结果，而无需直接暴露 SSH 凭据给 AI 模型。\n\n💬 如有任何问题，欢迎加入微信群交流：\n\n<img src=\"images/wechat.jpg\" alt=\"wechat\" width=\"220\">\n\n## ✨ 功能亮点\n\n- **🔒 安全连接**：支持多种安全的 SSH 连接方式，包括密码认证和私钥认证（支持带密码的私钥）\n- **🛡️ 命令安全控制**：通过灵活的黑白名单机制，精确控制允许执行的命令范围，防止危险操作\n- **🔄 标准化接口**：符合 MCP 协议规范，与支持该协议的 AI 助手无缝集成\n- **🚇 双传输模式**：同时支持 `exec` 和 `shell` 两种 transport，兼容直连主机与堡垒机或跳板机场景\n- **🌐 HTTP 接入**：默认使用 stdio；加上 `--mcp-transport http` 后通过 Streamable HTTP 提供 MCP 端点\n- **📂 文件传输**：支持双向文件传输功能，可上传本地文件到服务器或从服务器下载文件\n- **🔑 凭据隔离**：SSH 凭据完全在本地管理，不会暴露给 AI 模型，增强安全性\n- **🚀 即用即走**：使用 NPX 可直接运行，无需全局安装，方便快捷\n\n## 📦 开源仓库\n\nGitHub：[https://github.com/classfang/ssh-mcp-server](https://github.com/classfang/ssh-mcp-server)\n\nNPM: [https://www.npmjs.com/package/@fangjunjie/ssh-mcp-server](https://www.npmjs.com/package/@fangjunjie/ssh-mcp-server)\n\n## 🛠️ 工具列表\n\n| 工具 | 名称 | 描述 |\n|---------|-----------|----------|\n| execute-command | 命令执行工具 | 在远程服务器上执行 SSH 命令并获取执行结果 |\n| upload | 文件上传工具 | 将本地文件或整个目录上传到远程服务器指定位置 |\n| download | 文件下载工具 | 从远程服务器下载文件或整个目录到本地指定位置 |\n| read-file | 读文件工具 | 通过 SFTP 读取远程文本文件，可按字节偏移分页，拒绝二进制文件 |\n| write-file | 写文件工具 | 通过 SFTP 直接写入文本内容（覆盖或追加），不经过 shell 引号转义 |\n| list-servers | 服务器列表工具 | 列出所有可用SSH服务器配置 |\n| job-start / job-status / job-kill / job-list | 后台任务工具 | 启动超过命令超时限制的长任务，轮询输出与退出码，终止任务 |\n\n## 📚 使用方法\n\n### 0. 🤖 通过 AI Skill 快速配置（推荐）\n\n如果你使用支持 skill 的 AI 编程助手（如 Claude Code），可以直接使用内置的 **ssh-mcp-helper** skill 通过交互式问答完成安装和配置，无需手动编辑 JSON 文件。\n\n**使用方式：**\n\n1. 从本仓库 `skills/` 目录安装该 skill\n2. 告诉你的 AI 助手：\"帮我配置 ssh-mcp-server\" 或 \"给 Cursor 加一个 SSH MCP 连接\"\n3. skill 会逐步引导你：检查 Node.js 环境 → 选择 MCP 客户端 → 选择认证方式 → 收集连接参数 → 生成并写入配置\n\n该 skill 支持下文所有场景（账号密码、私钥、SSH config 复用、SOCKS 代理、堡垒机、多连接、2FA、命令限制等），并自动生成格式正确的配置。\n\n---\n\n下面的章节按从简单到复杂的顺序排列，最简单的入门方式就是用账号密码连接服务器。直接复制对应场景下的 `mcp.json` 配置到你的 MCP 客户端即可使用。\n\n> **⚠️ 重要提示**：在 MCP 配置文件中，每个命令行参数和其值必须是 `args` 数组中的独立元素。不要用空格将它们连接在一起。例如，使用 `\"--host\", \"192.168.1.1\"` 而不是 `\"--host 192.168.1.1\"`。\n\n### 1. 🔑 账号密码（最简单）\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--password\", \"pwd123456\"\n      ]\n    }\n  }\n}\n```\n\n### 2. 🔐 账号 + 私钥\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--privateKey\", \"~/.ssh/id_rsa\"\n      ]\n    }\n  }\n}\n```\n\n### 3. 🔏 带密码的私钥\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--privateKey\", \"~/.ssh/id_rsa\",\n        \"--passphrase\", \"pwd123456\"\n      ]\n    }\n  }\n}\n```\n\n### 4. 📋 复用 `~/.ssh/config`\n\n如果你已经在 `~/.ssh/config` 配置了主机别名，服务器会自动从中读取连接参数，`mcp.json` 里就不用再写一遍。\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"myserver\"\n      ]\n    }\n  }\n}\n```\n\n假设你的 `~/.ssh/config` 包含：\n\n```\nHost myserver\n    HostName 192.168.1.1\n    Port 22\n    User root\n    IdentityFile ~/.ssh/id_rsa\n```\n\n你也可以指定自定义的 SSH 配置文件路径：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"myserver\",\n        \"--ssh-config-file\", \"/path/to/custom/ssh_config\"\n      ]\n    }\n  }\n}\n```\n\n**注意**：命令行参数优先级高于 SSH 配置值。例如，如果你指定了 `--port 2222`，它会覆盖 SSH 配置中的端口。\n\n需要一次连接多台已在 SSH config 中配好的主机时，参见下文「10. 多 SSH 连接配置」的方式四。\n\n### 5. 🌐 通过代理连接\n\n当目标主机只能通过代理访问时，可使用 `--proxy` 配置 SOCKS5、HTTP 或 HTTPS 代理。\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--password\", \"pwd123456\",\n        \"--proxy\", \"http://username:password@proxy-host:proxy-port\"\n      ]\n    }\n  }\n}\n```\n\n支持的 URL 格式：\n\n```text\nsocks://username:password@proxy-host:1080\nsocks5://username:password@proxy-host:1080\nhttp://username:password@proxy-host:8080\nhttps://username:password@proxy-host:8443\n```\n\nHTTP 和 HTTPS 代理通过 `CONNECT` 方法建立到 SSH 服务的隧道，用户名和密码使用 Basic 代理认证。HTTP、HTTPS 未填写端口时分别默认使用 `80`、`443`；SOCKS5 必须填写端口。HTTPS 代理证书使用 Node.js 默认信任链进行验证。\n\n原有 `socksProxy` 配置和 `--socksProxy` 参数继续兼容，但只接受 `socks://` 和 `socks5://`。不要同时配置 `proxy` 和 `socksProxy`。\n\n### 6. 📝 使用命令白名单 / 黑名单\n\n通过 `--whitelist` 和 `--blacklist` 限制服务器允许执行的命令范围。多个模式之间用逗号分隔，每个模式都是一个正则表达式。**生产环境强烈建议配置**。白名单按完整命令匹配；启用白名单时，包含 `;`、`&`、`|`、反引号、`$()`、`>`、`<` 或换行符的命令会被直接拒绝，不能使用命令连接、管道、重定向或命令替换绕过校验。\n\n白名单示例（仅允许只读型查看命令）：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--password\", \"pwd123456\",\n        \"--whitelist\", \"^ls(?: [A-Za-z0-9_./-]+)*$,^cat [A-Za-z0-9_./-]+$,^df(?: -[A-Za-z]+)*(?: [A-Za-z0-9_./-]+)?$\"\n      ]\n    }\n  }\n}\n```\n\n黑名单示例（屏蔽危险命令）：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"root\",\n        \"--password\", \"pwd123456\",\n        \"--blacklist\", \"^\\\\s*[rR][mM] .*,^\\\\s*[sS][hH][uU][tT][dD][oO][wW][nN].*,^\\\\s*[rR][eE][bB][oO][oO][tT].*\"\n      ]\n    }\n  }\n}\n```\n\n> 注意：黑名单正则默认区分大小写，`^shutdown.*` 拦不住 `Shutdown /a`。上面的示例使用 `[sS]` 等字符组兼容不同 Node.js 版本，无需作用域内联标志 `(?i:模式)`。旧版 Node.js 可能不支持该内联语法，裸 `(?i)` 也不受 JavaScript 正则支持；非法正则会让服务器启动失败。JSON 字符串中的反斜杠需要转义：正则的 `\\s` 在 JSON 中写作 `\\\\s`，用于容忍命令前的空白。\n>\n> 注意：如果同时指定了白名单和黑名单，系统会先检查命令是否完整匹配白名单，再检查是否命中黑名单，命令必须同时通过两项检查才能被执行。建议在白名单正则中始终显式使用 `^` 和 `$`，便于阅读和审计。需要组合执行多个操作时，请将逻辑放入经过单独审查的脚本，并只允许固定的脚本调用；不要依赖字符串切割来解析 Shell 语法。\n\n### 7. 🧩 使用命令模板包裹命令\n\n`commandTemplate` 会把每条执行的命令套进一个模板里，适合切换用户（`su`）、放进容器、或经过跳板机的场景。当命令会作为 shell 参数传入时使用 `<quotedCommand>`，需要原样插入时使用 `<command>`；模板会**在目录 `cd` 拼接之后**应用，因此整个 `cd ... && <实际命令>` 都会被包裹起来。\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"10.0.0.1\",\n        \"--port\", \"22\",\n        \"--username\", \"deploy\",\n        \"--password\", \"xxx\",\n        \"--command-template\", \"su root -c <quotedCommand>\"\n      ]\n    }\n  }\n}\n```\n\n当指定目录为 `/data` 执行 `ls /app` 时，实际发送的命令是：\n\n```\nsu root -c 'cd -- '\\''/data'\\'' && ls /app'\n```\n\n其他常见模板：\n\n```text\nsudo bash -c <quotedCommand>\ndocker exec -i mycontainer sh -c <quotedCommand>\nssh jumphost <quotedCommand>\n```\n\n### 8. 🚇 堡垒机 / 跳板机（`transportMode: shell`）\n\n`transportMode` 默认是 `exec`。出现下面这些情况时，应该切换到 `shell`：\n\n- SSH 登录成功，但 `exec` 执行命令失败\n- 远端必须等登录 banner、profile、环境初始化完成后才能正常执行命令\n- 连接目标本质上是堡垒机或只暴露交互式 shell 的设备\n\n两者差异：\n\n- `exec`：支持 `execute-command`、`upload`、`download`\n- `shell`：命令通过持久 shell 会话串行执行，内部带命令队列；但**不支持** `upload` / `download`，因为该模式下禁用了 SFTP\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"bastion.example.com\",\n        \"--port\", \"22\",\n        \"--username\", \"ops\",\n        \"--password\", \"pwd123456\",\n        \"--transport-mode\", \"shell\",\n        \"--shell-ready-timeout\", \"15000\"\n      ]\n    }\n  }\n}\n```\n\nJSON 配置文件中还可以通过 `shellCommandTimeoutMs` 覆盖 shell 模式下单条命令的默认超时。\n\n### 9. 🔐 多因素认证（2FA / MFA）\n\n当 SSH 服务器要求多因素认证（密码 + 私钥 + 2FA 验证码）时启用 `tryKeyboard`。密码和私钥会自动提供；对于非密码提示，请在连接前通过服务端环境变量 `SSH_MCP_2FA_CODE` 提供验证码。\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"example.com\",\n        \"--port\", \"22\",\n        \"--username\", \"user\",\n        \"--password\", \"your_password\",\n        \"--privateKey\", \"/path/to/key\",\n        \"--try-keyboard\"\n      ]\n    }\n  }\n}\n```\n\n**认证流程：**\n1. 私钥认证（如果提供）\n2. 密码认证（如果提供）\n3. 键盘交互式认证通过 `SSH_MCP_2FA_CODE` 提供 2FA 验证码\n\n### 10. 🧩 多 SSH 连接配置\n\n需要在同一个 MCP server 里同时管理多个 SSH 目标时，给每个连接命名，调用时通过 `connectionName` 选择。共有四种配置方式：\n\n#### 📄 方式一：使用配置文件（推荐）\n\n创建 JSON 配置文件（例如 `ssh-config.json`）：\n\n**数组格式：**\n\n```json\n[\n  {\n    \"name\": \"dev\",\n    \"host\": \"1.2.3.4\",\n    \"port\": 22,\n    \"username\": \"alice\",\n    \"password\": \"{abc=P100s0}\",\n    \"socksProxy\": \"socks://127.0.0.1:10808\",\n    \"commandTimeoutMs\": 120000,\n    \"maxOutputBytes\": 10485760\n  },\n  {\n    \"name\": \"bastion\",\n    \"host\": \"9.9.9.9\",\n    \"port\": 22,\n    \"username\": \"ops\",\n    \"password\": \"pwd123456\",\n    \"transportMode\": \"shell\",\n    \"shellReadyTimeoutMs\": 15000,\n    \"shellCommandTimeoutMs\": 45000,\n    \"connectionTimeoutMs\": 30000,\n    \"keepaliveIntervalMs\": 10000,\n    \"keepaliveCountMax\": 3\n  },\n  {\n    \"name\": \"prod\",\n    \"host\": \"5.6.7.8\",\n    \"port\": 22,\n    \"username\": \"bob\",\n    \"password\": \"yyy\",\n    \"socksProxy\": \"socks://127.0.0.1:10808\"\n  },\n  {\n    \"name\": \"secure-server\",\n    \"host\": \"secure.example.com\",\n    \"port\": 22,\n    \"username\": \"admin\",\n    \"password\": \"your_password\",\n    \"privateKey\": \"/path/to/private/key\",\n    \"tryKeyboard\": true\n  }\n]\n```\n\n**对象格式：**\n\n```json\n{\n  \"dev\": {\n    \"host\": \"1.2.3.4\",\n    \"port\": 22,\n    \"username\": \"alice\",\n    \"password\": \"{abc=P100s0}\",\n    \"socksProxy\": \"socks://127.0.0.1:10808\",\n    \"commandTimeoutMs\": 120000,\n    \"maxOutputBytes\": 10485760\n  },\n  \"bastion\": {\n    \"host\": \"9.9.9.9\",\n    \"port\": 22,\n    \"username\": \"ops\",\n    \"password\": \"pwd123456\",\n    \"transportMode\": \"shell\",\n    \"shellReadyTimeoutMs\": 15000,\n    \"shellCommandTimeoutMs\": 45000\n  },\n  \"prod\": {\n    \"host\": \"5.6.7.8\",\n    \"port\": 22,\n    \"username\": \"bob\",\n    \"password\": \"yyy\",\n    \"socksProxy\": \"socks://127.0.0.1:10808\"\n  }\n}\n```\n\n然后使用 `--config-file` 参数：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--config-file\", \"ssh-config.json\"\n      ]\n    }\n  }\n}\n```\n\n#### 🔧 方式二：使用 JSON 格式的 --ssh 参数\n\n可以直接传递 JSON 格式的配置字符串：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--ssh\", \"{\\\"name\\\":\\\"dev\\\",\\\"host\\\":\\\"1.2.3.4\\\",\\\"port\\\":22,\\\"username\\\":\\\"alice\\\",\\\"password\\\":\\\"{abc=P100s0}\\\",\\\"socksProxy\\\":\\\"socks://127.0.0.1:10808\\\"}\",\n        \"--ssh\", \"{\\\"name\\\":\\\"bastion\\\",\\\"host\\\":\\\"9.9.9.9\\\",\\\"port\\\":22,\\\"username\\\":\\\"ops\\\",\\\"password\\\":\\\"pwd123456\\\",\\\"transportMode\\\":\\\"shell\\\",\\\"shellReadyTimeoutMs\\\":15000}\",\n        \"--ssh\", \"{\\\"name\\\":\\\"prod\\\",\\\"host\\\":\\\"5.6.7.8\\\",\\\"port\\\":22,\\\"username\\\":\\\"bob\\\",\\\"password\\\":\\\"yyy\\\",\\\"socksProxy\\\":\\\"socks://127.0.0.1:10808\\\"}\"\n      ]\n    }\n  }\n}\n```\n\n#### 📝 方式三：旧格式逗号分隔（向后兼容）\n\n对于密码中不包含特殊字符的简单情况，仍可使用旧格式：\n\n```bash\nnpx @fangjunjie/ssh-mcp-server \\\n  --ssh \"name=dev,host=1.2.3.4,port=22,user=alice,password=xxx\" \\\n  --ssh \"name=prod,host=5.6.7.8,port=22,user=bob,password=yyy\"\n```\n\n> **⚠️ 注意**：旧格式在处理包含特殊字符（如 `=`、`,`、`{`、`}`）的密码时可能会有问题。如果密码包含特殊字符，请使用方式一或方式二。\n\n#### 🔑 方式四：`--host` 逗号分隔多值（复用 `~/.ssh/config`）\n\n`--host` 支持逗号分隔多个主机，进入多连接模式：每个主机作为独立连接，连接名为主机值本身；单值 `--host` 行为不变（连接名仍为 `default`）。每个主机独立套用与单主机相同的合并规则——命中 SSH config 别名则展开 HostName/Port/User/IdentityFile，命令行参数逐字段覆盖。适合多台主机都已在 `~/.ssh/config` 中配好的场景，无需编写任何 JSON：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@fangjunjie/ssh-mcp-server\",\n        \"--host\", \"myserver,anotherserver\",\n        \"--pty\", \"false\"\n      ]\n    }\n  }\n}\n```\n\n认证解析按是否提供 CLI 认证参数（`--password`/`--privateKey`/`--agent`）分两种模式：\n\n- **未提供**：每个别名独立从 SSH config 解析认证（该别名的 IdentityFile 优先，其次 `~/.ssh` 默认身份文件回退，最后 SSH agent）\n- **提供**：全部主机共享该 CLI 认证，SSH config 的 IdentityFile 不参与（别名与裸 IP 行为一致，仅地址展开不同）；`--passphrase` 作为密钥解密口令可共享\n\n其余 CLI 策略参数（`--pty`、`--whitelist`、超时等）作为进程级默认值共享给全部主机，无需逐服务器重复。任一主机缺用户名或认证来源时，启动即报错并列出该主机。需要为不同主机配置不同的策略（端口、白名单、超时等）时，请使用方式一。\n\n在MCP工具调用时，通过 `connectionName` 参数指定目标连接名称，未指定时使用默认连接。\n\n示例（在prod连接上执行命令）：\n\n```json\n{\n  \"tool\": \"execute-command\",\n  \"params\": {\n    \"cmdString\": \"ls -al\",\n    \"connectionName\": \"prod\"\n  }\n}\n```\n\n示例（带超时选项的命令执行）：\n\n```json\n{\n  \"tool\": \"execute-command\",\n  \"params\": {\n    \"cmdString\": \"ping -c 10 127.0.0.1\",\n    \"connectionName\": \"prod\",\n    \"timeout\": 5000\n  }\n}\n```\n\n### ⏱️ 命令执行超时\n\n`execute-command` 工具支持超时选项，防止命令无限期挂起：\n\n- **timeout**: 单次调用的命令执行超时时间（毫秒，可选）；传入时会覆盖连接配置，未传入时使用对应连接配置或其 30000ms 默认值\n- 在 JSON 配置文件里为单个连接设置 `commandTimeoutMs`，可以改掉这个默认值，避免每次调用都手动传 `timeout`（`exec` 模式）\n- `shell` 模式对应的配置项是 `shellCommandTimeoutMs`\n- 调用参数里的 `timeout` 始终优先于上面两个配置项\n- 连接默认启用 SSH keepalive（`keepaliveIntervalMs`: 10000，`keepaliveCountMax`: 3），并使用 `connectionTimeoutMs` 限制连接建立时间\n- SFTP 打开和传输操作使用 `sftpTimeoutMs` 控制超时（默认 300000ms）\n- 错误响应现在包含稳定的 `code`、`message`、`retriable` 字段，便于上层 Agent 处理\n- 命令正常执行但以非零退出码结束（如 `grep` 无匹配、`diff` 有差异）时，`execute-command` 直接返回命令输出并在末尾附上 `[exit code] N`，不再作为工具错误、也不再包成 JSON；超时、连接失败、校验失败等真正的错误仍按上一条返回 `code`/`message`/`retriable`\n\n这对于像 `ping`、`tail -f` 或其他可能阻塞执行的长时间运行进程特别有用。\n\n### 📄 文件读写与目录传输\n\n- `read-file`：读取远程文本文件的一个字节范围（`offset`/`length`，默认最多 65536 字节）。返回内容前有 `[bytes] 起-止 of 总大小` 头部，未读完时给出 `next offset`，便于分页。检测到二进制内容（NUL 字节或大量无效 UTF-8）时拒绝并提示改用 `download`\n- `write-file`：直接把文本内容写入远程文件（`append: true` 追加，`mode` 指定新建文件权限）。内容不经过 shell，因此引号、`$`、反引号、多行内容都不需要转义\n- `upload` / `download` 的路径是目录时会递归传输：远端目录不存在则创建，符号链接等非普通文件会跳过，单次最多 2000 个文件（更大的目录请先打包）。文件逐个传输，路径校验与单文件相同\n- 以上均使用 SFTP，受 `allowedLocalPaths` / `allowedRemotePaths` 限制，`shell` 模式下不可用\n\n### 📦 命令输出限制\n\n会限制单条命令捕获的 `stdout` 和 `stderr` 总量，避免大文件或无限输出耗尽 MCP server 内存：\n\n- 在 JSON 连接配置中使用 `maxOutputBytes` 设置上限，默认值为 `10485760`（10 MiB）\n- `maxOutputBytes` 必须是非负整数；设置为 `0` 可禁用限制，但不建议对不受信任的命令禁用\n- 输出超过限制时，远端命令会被中止，工具返回 `OUTPUT_LIMIT_EXCEEDED` 错误和已经捕获的截断输出，不会把中止的命令误报为成功\n- 当 `pty` 为 `false` 时，成功命令写入 `stderr` 的警告或进度信息会保留在 `[stderr]` 区段中\n- `exec` 与 `shell` 两种模式都会应用该限制。区别在于 `exec` 模式只关闭该命令的通道，而 `shell` 模式的通道由该连接上的所有命令共用、远端在中止后仍会继续写入，因此会断开连接（与 shell 模式命令超时的处理一致）\n\n### 🧵 后台任务\n\n`execute-command` 会在超时后放弃命令，构建、部署这类长任务应改用后台任务：\n\n- `job-start`：在远端后台启动命令并立即返回 `job_id`。命令与 `execute-command` 一样经过 `commandWhitelist` / `commandBlacklist` 校验\n- `job-status`：返回状态（`running` / `exited` / `killed` / `lost`）、退出码、已运行时间和输出。不带 `offset` 时返回输出末尾（`tailBytes`，默认 8192）；带 `offset` 时从该字节继续读，返回里给出 `next offset`，重复轮询只会读到新增内容\n- `job-kill`：先 `SIGTERM`，5 秒后仍未退出则 `SIGKILL`，并递归终止子进程\n- `job-list`：列出最近的任务及状态\n- 任务的状态（命令、输出、pid、退出码）保存在远端 `~/.ssh-mcp-jobs/<id>/`，因此 MCP 重启或 SSH 连接断开都不会丢失；已结束超过 7 天的任务目录会在下次 `job-start` 时清理\n- `job-kill` 只会向命令行中带有该任务 id 的进程发信号，避免 pid 被复用后误杀无关进程；此时任务显示为 `lost`\n- 远端需要 POSIX `sh`，有 `setsid` 时任务独立成进程组；`shell`（堡垒机）模式同样可用\n\n### 🗂️ 列出所有SSH服务器\n\n可以通过MCP工具 `list-servers` 获取所有可用的SSH服务器配置：\n\n调用示例：\n\n```json\n{\n  \"tool\": \"list-servers\",\n  \"params\": {}\n}\n```\n\n返回示例：\n\n```json\n[\n  { \"name\": \"dev\", \"host\": \"1.2.3.4\", \"port\": 22, \"username\": \"alice\" },\n  { \"name\": \"prod\", \"host\": \"5.6.7.8\", \"port\": 22, \"username\": \"bob\" }\n]\n```\n\n### 🌐 HTTP 传输（Streamable HTTP）\n\n进程默认使用 stdio，现有 `command` / `args` 配置保持可用。需要客户端通过 URL 连接时，用 `--mcp-transport http` 把同一进程跑成 MCP Streamable HTTP 服务，端点默认是 `http://127.0.0.1:3000/mcp`。\n\n先在本机启动服务。令牌放在环境变量里，避免出现在进程参数中：\n\n```bash\nexport SSH_MCP_HTTP_TOKEN='replace-with-a-long-random-token'\nnpx -y @fangjunjie/ssh-mcp-server \\\n  --mcp-transport http \\\n  --http-host 127.0.0.1 \\\n  --http-port 3000 \\\n  --host 192.168.1.1 \\\n  --port 22 \\\n  --username root \\\n  --privateKey ~/.ssh/id_rsa\n```\n\nMCP 客户端配置 URL：\n\n```json\n{\n  \"mcpServers\": {\n    \"ssh-mcp-server\": {\n      \"url\": \"http://127.0.0.1:3000/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer replace-with-a-long-random-token\"\n      }\n    }\n  }\n}\n```\n\n`--http-token` 与 `SSH_MCP_HTTP_TOKEN` 同时设置时，以命令行参数为准。未设置令牌时只建议绑定 `127.0.0.1`。监听 `0.0.0.0` 或其他非本机地址时，任何能访问该端口的客户端都可以执行远程命令，启动日志会给出警告。\n\n### ⚙️ 命令行选项参考\n\n```text\n选项:\n  --config-file       JSON 配置文件路径（推荐用于多服务器配置）\n  --ssh-config-file   SSH 配置文件路径（默认: ~/.ssh/config）\n  --ssh               SSH 连接配置（可以是 JSON 字符串或旧格式）\n  -h, --host          SSH 服务器主机地址或 SSH 配置中的别名（逗号分隔多值进入多连接模式）\n  -p, --port          SSH 服务器端口\n  -u, --username      SSH 用户名\n  -w, --password      SSH 密码\n  -k, --privateKey    SSH 私钥文件路径\n  -P, --passphrase    私钥密码（如果有的话）\n  -a, --agent         SSH agent socket 路径\n  --try-keyboard      启用键盘交互式认证以支持 2FA/MFA（默认: false）\n  -W, --whitelist     命令白名单，以逗号分隔的正则表达式\n  -B, --blacklist     命令黑名单，以逗号分隔的正则表达式\n  --proxy             代理地址，支持 SOCKS5、HTTP 和 HTTPS\n  -s, --socksProxy    旧版 SOCKS5 代理地址（兼容参数）\n  --allowed-local-paths   upload/download 允许访问的额外本地路径，逗号分隔\n  --allowed-remote-paths  SFTP upload/download 允许访问的远端路径（POSIX 绝对路径或 Windows 盘符绝对路径，如 /var/log 或 C:/Users），逗号分隔\n  --transport-mode    SSH transport 模式: exec 或 shell（默认: exec）\n  --shell-ready-timeout   shell 就绪探测超时，单位毫秒（默认: 10000）\n  --command-template  命令模板；shell 参数用 <quotedCommand>，原样插入用 <command>\n  --pty <true|false>  为命令执行分配伪终端（默认: true）\n  --pre-connect       启动时预连接所有配置的 SSH 服务器\n  --mcp-transport     MCP 客户端传输：stdio 或 http（默认: stdio）\n  --http-host         HTTP 监听地址（默认: 127.0.0.1）\n  --http-port         HTTP 监听端口（默认: 3000，0 表示由系统分配）\n  --http-path         HTTP 端点路径（默认: /mcp）\n  --http-token        HTTP Bearer 令牌；未传时读取环境变量 SSH_MCP_HTTP_TOKEN\n  --version, -v       打印包版本\n  --help              打印帮助信息\n```\n\n## 🛡️ 安全注意事项\n\n该服务器提供了在远程服务器上执行命令和传输文件的强大功能。为确保安全使用，请注意以下几点：\n\n- **命令白名单**：*强烈建议* 使用 `--whitelist` 选项来限制可执行的命令集合。如果没有白名单，任何命令都可以在远程服务器上执行，这可能带来重大的安全风险。\n- **私钥安全**：服务器会将 SSH 私钥读入内存。请确保运行 `ssh-mcp-server` 的机器是安全的。不要将服务器暴露给不受信任的网络。\n- **HTTP 端点**：HTTP 模式默认只监听 `127.0.0.1`。对外网卡监听时请配置 `--http-token` 或 `SSH_MCP_HTTP_TOKEN`。令牌相当于远程命令执行的钥匙，使用长随机字符串，并优先放在环境变量中。\n- **拒绝服务攻击 (DoS)**：服务器没有内置的速率限制。攻击者可能通过向服务器发送大量连接请求或大文件传输来发起 DoS 攻击。建议在具有速率限制功能的防火墙或反向代理后面运行服务器。\n- **路径遍历**：服务器内置了对本地文件系统路径遍历攻击的保护。但是，仍然需要注意在 `upload` 和 `download` 命令中使用的路径。\n- **本地传输范围**：默认仅允许访问当前工作目录。只有在明确可信时，才建议通过 `--allowed-local-paths` 或配置文件中的 `allowedLocalPaths` 放宽范围。\n- **远端传输范围**：SFTP upload/download 接受 POSIX 绝对路径（如 `/var/log/app.log`）和 Windows 盘符绝对路径（如 `C:/Users/foo/bar.txt`，自动归一化为正斜杠）。未配置 `allowedRemotePaths`（或 `--allowed-remote-paths`）时，任意远端路径都允许，但启动时会打印警告。强烈建议显式配置 `allowedRemotePaths` 白名单，避免模型被 prompt 注入后读写 `~/.ssh/authorized_keys`、`/etc/sshd_config` 之类敏感文件。\n\n## 🌟 Star 历史\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/chart?repos=classfang/ssh-mcp-server&type=date&legend=top-left&sealed_token=ndORao73xOZgyX7IvlIIOynMoeEP5Ds9YAG-zOfMMBlNepLdP3e7T7k9K94X8TdvuxplN5DXLolbF9jFFsYDD-1V0V8HO6B3swaPOvJaonKeiFNdAuWsXg)](https://www.star-history.com/?type=date&legend=top-left&repos=classfang%2Fssh-mcp-server)\n","readmeFilename":"README.md"}