返回顶部
r

remote-terminal

Remote Linux terminal control skill. Use when the user wants to (1) connect to a remote Linux server and execute commands, (2) perform SSH operations on remote hosts, (3) manage multiple remote servers, (4) run shell commands on remote machines. Triggers on phrases like "connect to server", "SSH to", "run on remote", "execute on production", "login to my server", "在服务器上执行", "远程连接", "SSH到".

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
82
下载量
0
收藏
概述
安装方式
版本历史

remote-terminal

# Remote Terminal Execute commands on remote Linux servers through SSH, Telnet, or web terminals. Supports password authentication, SSH keys, and SSH config aliases. ## Quick Start ### Basic SSH Connection ```bash ssh user@hostname "command" ``` ### Using SSH Config Aliases If the user has `~/.ssh/config` configured: ```bash ssh <alias> "command" ``` ### With Password (using sshpass) ```bash sshpass -p 'password' ssh user@hostname "command" ``` ## Connection Methods ### 1. SSH (Recommended) **Key-based authentication (most secure):** ```bash ssh -i ~/.ssh/id_rsa user@hostname "command" ``` **Using SSH config aliases:** ```bash # Example ~/.ssh/config Host production HostName 192.168.1.100 User admin Port 22 IdentityFile ~/.ssh/id_rsa # Usage ssh production "docker ps" ``` **Password authentication:** ```bash sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@hostname "command" ``` ### 2. Telnet ```bash # Using expect for interactive telnet expect -c ' spawn telnet hostname expect "login:" send "username\r" expect "Password:" send "password\r" expect "$ " send "command\r" expect "$ " send "exit\r" ' ``` ### 3. Web Terminal (ttyd, wetty) For web-based terminals, use curl or HTTP requests to the terminal's API: ```bash # Example: ttyd WebSocket connection (requires wscat or similar) wscat -c ws://hostname:7681/ws ``` ## Security Features ### Command Confirmation Before executing dangerous commands, ask the user to confirm: **Dangerous command patterns:** - `rm -rf`, `rm -r`, `del`, `erase` - `shutdown`, `reboot`, `poweroff`, `halt` - `mkfs`, `fdisk`, `parted`, `dd` - `chmod 777`, `chown -R` - `> /dev/`, `truncate` - `kill -9`, `pkill`, `killall` - `iptables`, `ufw`, `firewall-cmd` - `DROP DATABASE`, `DELETE FROM`, `TRUNCATE` **Confirmation format:** > ⚠️ **Dangerous command detected**: `rm -rf /var/log/*` > This will permanently delete files. Proceed? (yes/no) ### Command Blacklist These commands are blocked by default and require explicit user override: - `rm -rf /` (entire filesystem) - `mkfs` on mounted drives - `dd` to primary disk - Any command piping to `/dev/sda` or similar ### Operation Logging All remote commands are logged with timestamp, target host, and command: ``` [2026-03-21 15:30:45] [production] docker ps [2026-03-21 15:31:02] [staging] systemctl restart nginx ``` Log location: `~/.qclaw/logs/remote-terminal.log` ## Workflow ### Step 1: Identify Target Host Parse the user's request to identify: - Hostname, IP address, or SSH alias - Username (if specified, otherwise use default or prompt) - Connection method (SSH by default) **Example prompts:** - "Connect to production and run docker ps" → alias: production - "SSH to 192.168.1.50, check disk space" → host: 192.168.1.50 - "On my server, restart nginx" → need to ask which server ### Step 2: Build Connection Command Construct the appropriate SSH command based on: - Authentication method available - Host configuration - Whether it's interactive or one-shot ### Step 3: Security Check If command matches dangerous patterns: 1. Warn the user 2. Ask for explicit confirmation 3. If confirmed, proceed; otherwise, cancel ### Step 4: Execute and Return Output Run the command and return: - Standard output - Standard error (if any) - Exit code - Execution time ### Step 5: Log Operation Record the operation in the log file for audit trail. ## Common Operations ### Check System Status ```bash ssh host "uptime && free -h && df -h" ``` ### Docker Management ```bash ssh host "docker ps -a" ssh host "docker logs container_name" ssh host "docker restart container_name" ``` ### Service Management ```bash ssh host "systemctl status nginx" ssh host "sudo systemctl restart nginx" ssh host "journalctl -u nginx -f --no-pager -n 50" ``` ### File Operations ```bash # View file ssh host "cat /var/log/nginx/error.log | tail -50" # Copy file to local scp user@host:/remote/path /local/path # Copy file to remote scp /local/path user@host:/remote/path ``` ### Process Management ```bash ssh host "ps aux | grep nginx" ssh host "top -b -n 1 | head -20" ``` ## Interactive Sessions For commands requiring interaction, use `ssh -t` for pseudo-terminal: ```bash ssh -t host "sudo nano /etc/nginx/nginx.conf" ssh -t host "htop" ``` **Note:** Interactive sessions require the `-t` flag to allocate a PTY. ## Multiple Hosts ### Parallel Execution Execute the same command on multiple hosts: ```bash for host in web1 web2 web3; do echo "=== $host ===" ssh $host "uptime" done ``` ### Using Parallel SSH For larger fleets: ```bash # Using pssh (parallel-ssh) pssh -h hosts.txt "uptime" # hosts.txt format # web1.example.com # web2.example.com # web3.example.com ``` ## Host Management ### Store Host Information Hosts can be stored in `~/.qclaw/workspace/memory/hosts.json`: ```json { "hosts": { "production": { "host": "192.168.1.100", "user": "admin", "method": "ssh-key", "key": "~/.ssh/id_rsa", "tags": ["web", "critical"] }, "staging": { "host": "staging.example.com", "user": "deploy", "method": "ssh-config", "alias": "staging", "tags": ["web", "testing"] } } } ``` ### List Known Hosts ```bash # From SSH config grep "^Host " ~/.ssh/config | awk '{print $2}' # From stored hosts.json cat ~/.qclaw/workspace/memory/hosts.json ``` ## Troubleshooting ### Connection Refused ```bash # Check if host is reachable ping hostname # Check if SSH port is open nc -zv hostname 22 # Try with verbose output ssh -vvv user@hostname ``` ### Permission Denied ```bash # Check key permissions chmod 600 ~/.ssh/id_rsa # Try with specific key ssh -i ~/.ssh/id_rsa user@hostname # Check if key is added to agent ssh-add -l ssh-add ~/.ssh/id_rsa ``` ### Host Key Verification Failed ```bash # Remove old host key ssh-keygen -R hostname # Or temporarily disable check (not recommended for production) ssh -o StrictHostKeyChecking=no user@hostname ``` ## Output Parsing ### Structured Output For commands returning JSON: ```bash ssh host "docker inspect container --format '{{json .}}'" | jq . ``` ### Table Output For commands like `docker ps`, `ps aux`: ```bash # Return as-is for readable tables ssh host "docker ps --format 'table {{.Names}}\t{{.Status}}'" # Parse for structured data ssh host "docker ps --format '{{json .}}'" | jq . ``` ## Resources ### scripts/ - `ssh_exec.py` - Python wrapper for SSH operations with logging - `host_manager.py` - Manage host configurations - `parallel_exec.py` - Execute commands on multiple hosts ### references/ - `ssh_config_guide.md` - SSH config file examples and patterns - `security_best_practices.md` - Security guidelines for remote access

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 remote-terminal-1776113350 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 remote-terminal-1776113350 技能

通过命令行安装

skillhub install remote-terminal-1776113350

下载 Zip 包

⬇ 下载 remote-terminal v1.0.0

文件大小: 13.52 KB | 发布时间: 2026-4-14 11:31

v1.0.0 最新 2026-4-14 11:31
Remote Terminal v1.0.0

- Initial release of the remote-terminal skill.
- Enables remote Linux server control via SSH, Telnet, or web terminals.
- Supports multiple authentication methods (password, SSH keys, SSH config).
- Includes built-in security features: command confirmation for dangerous operations, command blacklist, and operation logging.
- Provides host management, parallel execution, and troubleshooting guidance.
- Triggers on common remote connection phrases in English and Chinese.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部