SSH远程控制:AI Agent通过SSH连接并操作远程Mac/Linux电脑,无需在被控端安装任何工具。一个服务器上的AI,触手伸向多台远程设备。
SSH Remote Control - 远程控制技能是一项面向实际任务的技能,主要用于让 AI Agent 从服务器通过 SSH 远程连接和控制 Mac/Linux 电脑,无需在被控电脑上安装任何 agent 工具;核心原理:;
对比传统方案:;Agent位置;被控电脑需要安装。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
让 AI Agent 从服务器通过 SSH 远程连接和控制 Mac/Linux 电脑,无需在被控电脑上安装任何 agent 工具。
核心原理:
对比传统方案:
| 方案 | Agent位置 | 被控电脑需要安装 | 架构 |
|---|---|---|---|
| 传统方案 | 本地电脑 | 需要 | 本地控制本地 |
| 本技能 | 服务器 | 不需要 | 远程控制远程 |
┌─────────────┐ SSH ┌─────────────────┐ │ AI Agent │ ──────────> │ Remote Computer │ │ (服务器) │ 加密隧道 │ (Mac/Linux) │ │ │ <────────── │ │ │ 执行命令 │ 返回结果 │ 无需安装agent │ └─────────────┘ └─────────────────┘
| 变量名 | 必填 | 说明 |
|---|---|---|
SSH_TARGET_HOST |
是 | 远程电脑的公网地址或域名 |
SSH_TARGET_PORT |
是 | SSH 端口(默认22) |
SSH_TARGET_USER |
是 | 远程电脑用户名 |
SSH_KEY_PATH |
是 | 本地私钥路径 |
DEFAULT_SHELL |
否 | 远程电脑默认shell(默认/bin/zsh) |
ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'echo "SSH OK"'
# 查看目录 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'ls -la ~/Desktop/' # 查看文件内容 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'cat ~/Desktop/test.txt' # 创建文件 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'cat > ~/Desktop/ai_created.txt << '"'"'EOF'"'"' 这是AI创建的文件 EOF' # 上传文件到远程电脑 scp -i $SSH_KEY_PATH -P $SSH_TARGET_PORT localfile $SSH_TARGET_USER@$SSH_TARGET_HOST:/path/to/remote/ # 从远程电脑下载文件 scp -i $SSH_KEY_PATH -P $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST:/path/to/remote/file localpath/
# 打开应用 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'open -a "Safari"' # 关闭应用 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'osascript -e '"'"'quit application "Safari"'"'"'' # 查看运行中的程序 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'osascript -e '"'"'tell application "System Events" to get name of every process'"'"''
# 获取应用名称 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'osascript -e '"'"'tell application "NetEase Cloud Music" to name'"'"'' # 获取Chrome当前标签 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'osascript -e '"'"'tell application "Google Chrome" to get URL of every tab of every window'"'"'' # 截屏 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'screencapture ~/Desktop/screenshot.png'
# 查看系统版本 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'sw_vers' # 查看资源使用 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'top -l 1 | head -10' # 查看磁盘空间 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'df -h' # 查看运行进程 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'ps aux | head -20'
# 查看Node.js版本 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'node --version' # 查看Git状态 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'cd ~/project && git status' # Docker操作 ssh -i $SSH_KEY_PATH -p $SSH_TARGET_PORT $SSH_TARGET_USER@$SSH_TARGET_HOST 'docker ps'
开启远程登录
生成SSH密钥对
ssh-keygen -t ed25519 -C "ai@server"
添加公钥到远程电脑
echo "公钥内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
配置内网穿透(如果电脑在内网)
为什么需要内网穿透? 大多数家庭/办公网络的电脑没有公网IP,无法直接从外网访问。内网穿透工具可以将内网端口映射到公网,让外部设备能够连接进来。
常用内网穿透工具:
| 工具 | 特点 | 官网 |
|---|---|---|
| 花生壳 | 国内老牌,稳定,支持SSH | oray.com |
| ngrok | 国际流行,配置简单 | ngrok.com |
| frp | 开源免费,可自建服务器 | github.com/fatedier/frp |
| NATAPP | 国内服务,免费额度 | natapp.cn |
安全优势——本地完全控制:
与其他远程控制方案不同,本技能的安全性完全由你掌控:
💡 为什么"关闭穿透"是真正的安全?
服务器的安全靠"规则"——端口持续开放,靠防火墙规则防护。 个人电脑 + 穿透工具的安全靠"开关"——穿透工具不运行,外部根本找不到你。 这不是"防护",这是物理隔离。关闭穿透 = 攻击面归零。
使用建议:
安装openssh-server
sudo apt install openssh-server
配置SSH
sudo nano /etc/ssh/sshd_config # 确保有: PasswordAuthentication no PubkeyAuthentication yes
⚠️ 安全建议:禁用密码认证,只允许密钥认证
重启SSH服务
sudo systemctl restart sshd
配置内网穿透(同上)
~/.ssh/authorized_keys中限制可执行的命令command="/usr/local/bin/limited.sh",no-pty,permitopen="*",ssh-ed25519 AAAA...
使用专用受限账户(而非 root/管理员):
aiagent密钥权限限制:
from= 限制连接来源 IPcommand= 限制可执行命令no-pty 禁止分配伪终端permitopen= 限制端口转发示例(~/.ssh/authorized_keys):
from="你的服务器IP",no-pty,command="/bin/false",ssh-ed25519 AAAA...
~/.ssh/authorized_keyschmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
ServerAliveInterval保持连接相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章