YuKaiXu

Rssh2 - SSH远程自动化工具

运维安全v1.0.1
作者:YuKaiXu更新于 2026-05-17共 2 个版本 · 最新版本发布于 2026-02-27rssh2@clawhub_ykaixu/rssh2
服务器运维权限检查配置生成#会话

据 AlphaMoat 统计,截至 2026-09,Rssh2 - SSH远程自动化工具 累计下载 1,349 次、获 0 个星标,在全部 5,078 个 AI 技能中排名第 4,867 位,在「运维安全」分类(264 个)中排名第 260 位。

累计安装
145
累计下载
1,349
星标
-
全站排名
#4,867
全站前 96% · 「运维安全」前 99%
平台累计安装累计下载星标评论
ClawHub ↗341,265--
SkillHub ↗1451,349-—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

远程命令可能影响生产服务,隧道可能暴露内网服务,文件同步或删除也可能覆盖或移除远端数据。仅连接自己控制的主机;执行前逐条检查命令、主机密钥与路径,并使用最小权限账户,破坏性操作需先确认。 安全资料指出缺少主机密钥验证;用于敏感主机前应补充或强制验证。

资料发布于 2026-10-29

可以用来做什么

  • 在受控主机上管理 SSH 会话并执行已审阅的命令
  • 为明确授权的网络访问建立 SSH 隧道
  • 通过 SFTP 传输或同步经核对的文件

什么时候用

  • 目标主机由你控制且访问范围明确时
  • 已检查 host key、命令、隧道绑定和文件路径时
  • 备份与破坏性操作确认机制已就绪时

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

为一台已授权测试主机设计 SSH 操作前检查清单,覆盖 host key、最小权限、隧道绑定和文件备份;不要连接主机或执行命令。

月度数据趋势

累计下载1,349
4279221,4172026-03 · 累计下载 4952026-05 · 累计下载 8172026-06 · 累计下载 9232026-07 · 累计下载 1,1062026-08 · 累计下载 1,1792026-09 · 累计下载 1,34926-0326-09
星标-
0112026-03 · 星标 -2026-05 · 星标 -2026-06 · 星标 -2026-07 · 星标 -2026-08 · 星标 -2026-09 · 星标 -26-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-091,349—-
2026-081,179+6.6%-
2026-071,106+19.8%-
2026-06923+13.0%-
2026-05817—-
2026-03495—-

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

6.1 KB · ClawHub v1.0.1
---
name: rssh2
description: SSH远程自动化工具 - 会话管理、隧道、文件传输。使用场景:需要远程执行命令、建立SSH隧道、传输文件时。
metadata: {"clawdbot":{"emoji":"🔐","requires":{"bins":[]},"dependencies":["ssh2"]}}
---

# Rssh2 - SSH远程自动化工具

基于 ssh2 的 SSH 远程自动化工具,提供会话管理、隧道管理、文件传输等功能。
展开全部(共 322 行)
## ⚠️ 安全提示

**重要:** 请勿在代码中硬编码敏感信息(密码、私钥内容等)。建议:
- 使用环境变量存储敏感配置
- 使用密钥文件路径而非密钥内容
- 将 test.js 中的配置替换为实际配置后再运行

## 功能特性

### 🔐 会话管理
- 连接池管理(复用连接,提升性能)
- 自动重连机制
- 心跳保持
- 命令队列
- 并发控制

### 🌉 隧道管理
- 本地端口转发
- 远程端口转发
- 动态端口转发(SOCKS代理)
- 多隧道管理
- 自动重连

### 📁 文件传输
- SFTP 上传/下载
- 目录同步
- 文件监控
- 断点续传

### ⚙️ 配置管理
- 多主机配置
- 密钥管理
- 环境变量支持
- 配置文件热加载

## 快速开始

### 基本连接

```javascript
const { Rssh2 } = require('./index.js');

const rssh2 = new Rssh2({
  host: 'bg.dlna.net',
  port: 38022,
  username: 'root',
  privateKey: '/home/yupeng/.ssh/id_ed25519'
});

// 执行命令
const result = await rssh2.exec('uptime');
console.log(result.output);
```

### 会话管理

```javascript
// 创建会话管理器
const sessionManager = rssh2.getSessionManager();

// 执行多个命令(复用连接)
const results = await Promise.all([
  sessionManager.exec('uptime'),
  sessionManager.exec('df -h'),
  sessionManager.exec('free -m')
]);

// 关闭会话
await sessionManager.close();
```

### 隧道管理

```javascript
// 本地端口转发
const tunnel = await rssh2.tunnel.local({
  localPort: 8080,
  remoteHost: 'localhost',
  remotePort: 80
});

console.log('隧道已建立: localhost:8080 -> remote:80');

// 关闭隧道
await tunnel.close();
```

### 文件传输

```javascript
// 上传文件
await rssh2.sftp.upload('./local.txt', '/remote/path/file.txt');

// 下载文件
await rssh2.sftp.download('/remote/path/file.txt', './local.txt');

// 同步目录
await rssh2.sftp.sync('./local-dir', '/remote/dir');
```

## 配置选项

### 连接配置

```javascript
{
  host: 'example.com',        // 主机地址
  port: 22,                   // SSH端口
  username: 'user',           // 用户名
  password: 'pass',           // 密码(可选)
  privateKey: '/path/to/key', // 私钥路径(可选)
  passphrase: 'keypass',      // 私钥密码(可选)
  timeout: 10000,             // 连接超时(毫秒)
  keepaliveInterval: 30000    // 心跳间隔(毫秒)
}
```

### 会话管理器配置

```javascript
{
  maxPoolSize: 5,             // 最大连接池大小
  maxConcurrent: 10,          // 最大并发命令数
  commandTimeout: 30000,      // 命令超时(毫秒)
  retryAttempts: 3,           // 重试次数
  retryDelay: 1000            // 重试延迟(毫秒)
}
```

### 隧道配置

```javascript
{
  localPort: 8080,            // 本地端口
  remoteHost: 'localhost',    // 远程主机
  remotePort: 80,             // 远程端口
  autoReconnect: true,        // 自动重连
  reconnectDelay: 5000        // 重连延迟(毫秒)
}
```

## API 参考

### Rssh2 主类

#### `constructor(config)`
创建 Rssh2 实例

#### `exec(command, options?)`
执行单个命令

#### `getSessionManager()`
获取会话管理器实例

#### `getTunnelManager()`
获取隧道管理器实例

#### `getSftpManager()`
获取 SFTP 管理器实例

#### `connect()`
建立连接

#### `disconnect()`
断开连接

### SessionManager

#### `exec(command, options?)`
执行命令(使用连接池)

#### `execMultiple(commands)`
执行多个命令

#### `close()`
关闭所有连接

### TunnelManager

#### `local(config)`
创建本地端口转发

#### `remote(config)`
创建远程端口转发

#### `dynamic(config)`
创建动态端口转发(SOCKS)

#### `closeAll()`
关闭所有隧道

### SftpManager

#### `upload(localPath, remotePath)`
上传文件

#### `download(remotePath, localPath)`
下载文件

#### `sync(localDir, remoteDir)`
同步目录

#### `list(path)`
列出文件

#### `delete(path)`
删除文件

## 使用场景

### 1. 远程运维

```javascript
const rssh2 = new Rssh2(config);

// 检查服务状态
const status = await rssh2.exec('systemctl status nginx');

// 重启服务
await rssh2.exec('systemctl restart nginx');

// 查看日志
const logs = await rssh2.exec('tail -n 100 /var/log/nginx/access.log');
```

### 2. 数据库隧道

```javascript
// 创建数据库隧道
const tunnel = await rssh2.tunnel.local({
  localPort: 3306,
  remoteHost: 'localhost',
  remotePort: 3306
});

// 现在可以通过 localhost:3306 访问远程数据库
```

### 3. 文件部署

```javascript
// 上传应用文件
await rssh2.sftp.upload('./app.zip', '/tmp/app.zip');

// 解压
await rssh2.exec('cd /var/www && unzip -o /tmp/app.zip');

// 重启服务
await rssh2.exec('systemctl restart app');
```

### 4. 批量操作

```javascript
const session = rssh2.getSessionManager();

// 并发执行多个命令
const results = await session.execMultiple([
  'uptime',
  'df -h',
  'free -m',
  'ps aux | head -20'
]);

console.log(results);
```

## 安全建议

1. **使用密钥认证** - 比密码更安全
2. **限制用户权限** - 不要使用 root 账号
3. **启用防火墙** - 限制 SSH 访问
4. **定期更新密钥** - 轮换 SSH 密钥
5. **日志审计** - 记录所有操作

## 故障排查

### 连接失败

```javascript
try {
  await rssh2.connect();
} catch (error) {
  console.error('连接失败:', error.message);
  // 检查主机、端口、认证信息
}
```

### 命令超时

```javascript
const result = await rssh2.exec('long-running-command', {
  timeout: 60000  // 60秒超时
});
```

### 隧道断开

```javascript
const tunnel = await rssh2.tunnel.local(config, {
  autoReconnect: true,
  reconnectDelay: 5000
});
```

## 依赖

- ssh2 ^1.17.0

## 许可证

MIT

「运维安全」分类下的热门技能

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。