Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RemoteAgent — 远程服务器管理工具

用一个脚本管理远程 GPU 服务器:自动挂载目录、SSH 登录、运行命令、启动推理服务。 支持 AutoDL、自建服务器等,多台服务器随时切换。


目录结构

RemoteAgent/
├── .env.example       ← 配置模板(从这里开始)
├── .env               ← 当前使用的服务器配置(不提交到 git)
├── .env.<名字>        ← 每台服务器一个配置文件(不提交到 git)
├── anthropic_proxy.py ← Anthropic API 本地代理(用于远程运行 Claude Code)
├── scripts/
│   └── remote.sh      ← 所有操作的统一入口
└── <挂载目录>/        ← 远程文件在本地的映射(不提交到 git)

快速开始(第一次使用)

第一步:创建服务器配置文件

复制模板,填入你的服务器信息:

cp .env.example .env.我的服务器

用文本编辑器打开 .env.我的服务器,修改以下几行:

# AutoDL 控制台「快捷工具 → SSH 登录」里能找到登录指令
# 例如登录指令是:ssh -p 52979 root@connect.westd.seetacloud.com
REMOTE_HOST=connect.westd.seetacloud.com   # 登录指令里 @ 后面的地址
REMOTE_USER=root                            # 登录指令里 @ 前面的用户名
REMOTE_PORT=52979                           # 登录指令里 -p 后面的端口号

REMOTE_PROJECT_PATH=/root/autodl-tmp        # 想挂载到本地的远程目录
REMOTE_CONDA_PATH=/root/miniconda3          # 远程的 conda 安装路径
REMOTE_CONDA_ENV=base                       # 要激活的 conda 环境

LOCAL_MOUNT_POINT="/本地/挂载/目录"         # 远程文件将出现在本地的哪个目录

第二步:切换到这台服务器

bash scripts/remote.sh use 我的服务器

第三步:配置免密 SSH(在普通终端执行,需输入一次密码

bash scripts/remote.sh setup-ssh

这一步只需要做一次。完成后就不需要再输密码了。

AutoDL 用户强烈推荐再执行一步,让 SSH 在重启后自动恢复:

bash scripts/remote.sh setup-ssh-persistent

第四步:开始使用

# 查看远程文件(会自动挂载,本地目录里就能看到远程文件)
bash scripts/remote.sh run "ls -la"

# 在远程执行命令(在 conda 环境里运行)
bash scripts/remote.sh run "python train.py"

# 进入远程 shell(交互式操作)
bash scripts/remote.sh ssh

# 查看 GPU、依赖包、checkpoint 状态
bash scripts/remote.sh check-env

挂载成功后,在本地的 LOCAL_MOUNT_POINT 目录里就能直接看到并编辑远程文件。


AutoDL 换服务器后如何重连

AutoDL 每次重启实例,SSH 端口(有时还有地址)都会变。根据情况用不同命令:

情况 A:同一台实例重启,只有端口变了

在 AutoDL 控制台找到新的登录指令(如 ssh -p 53001 root@connect.westd.seetacloud.com),端口变了,地址没变:

bash scripts/remote.sh reconnect 53001

情况 B:换了新实例,地址和端口都变了

新登录指令地址也变了(如从 connect.bjc1 变成 connect.westd):

bash scripts/remote.sh reconnect connect.westd.seetacloud.com 53001

reconnect 后连接失败怎么办?

如果 reconnect 最后提示"连接失败",说明这台服务器是新的,还没配置免密 SSH。在普通终端运行:

bash scripts/remote.sh setup-ssh

输入一次密码后,再跑一次 reconnect 就好了。

如果提前做了 setup-ssh-persistent(把公钥备份到数据盘),同一台实例重启后 SSH 会自动恢复,reconnect <新端口> 一条命令就够了。


全部命令

命令 说明
list 列出所有服务器配置,标注当前默认
use <名字> 切换默认服务器
-e <名字> <命令> 临时使用某台服务器,不改默认
reconnect <端口> 仅端口变了时重连(同地址重启)
reconnect <地址> <端口> 地址和端口都变了时重连(换了新地区)
setup-ssh 配置免密 SSH,每台新服务器第一次必须做
setup-ssh-persistent 公钥备份到数据盘,重启后自动恢复(AutoDL 推荐)
mount 手动挂载远程目录到本地
umount 卸载挂载
remount 重新挂载(断开后用)
ssh 进入远程交互式 shell
run <命令> 在远程 conda 环境中执行命令
check-env 检查 GPU、Python 包、checkpoint 状态
server start 启动推理服务器(tmux 后台运行)
server stop 停止推理服务器
server status 查看服务器状态、日志、GPU 占用
server logs 实时查看服务器日志

推理服务器配置

.env 里调整推理相关配置:

SERVER_PORT=5000                        # 服务端口
SERVER_GPUS=0,1                         # 使用的 GPU 编号
SERVER_NUM_GPUS=2                       # GPU 数量
SERVER_EXTRA_ARGS=""                    # 额外启动参数
SERVER_CHECKPOINT_PATH=./checkpoint     # checkpoint 路径(相对于远程项目目录)
TMUX_SESSION=inference                  # tmux session 名称

启动和管理:

bash scripts/remote.sh server start   # 后台启动
bash scripts/remote.sh server status  # 查看状态和日志
bash scripts/remote.sh server logs    # 实时跟踪日志
bash scripts/remote.sh server stop    # 停止

多服务器管理

# 查看所有服务器
bash scripts/remote.sh list
# 输出示例:
#   [autodl]  root@connect.westd.seetacloud.com:52979  ◀ 当前默认
#   [czj]     czj@10.100.164.161:22

# 切换默认服务器
bash scripts/remote.sh use czj

# 临时用另一台(不改默认)
bash scripts/remote.sh -e czj run "nvidia-smi"
bash scripts/remote.sh -e autodl server status

添加新服务器:

  1. cp .env.example .env.新名字
  2. 修改连接信息
  3. bash scripts/remote.sh use 新名字
  4. 在普通终端运行 bash scripts/remote.sh setup-ssh

常见问题

Q:挂载失败,提示 Permission denied 或 Host key verification failed? 还没配置免密 SSH。在普通终端运行 bash scripts/remote.sh setup-ssh,输入一次密码即可。

Q:本地挂载目录突然没内容了? 网络断开导致 SSHFS 挂载失效。运行 bash scripts/remote.sh remount 重新挂载。

Q:AutoDL 每次重启都要重新配置,麻烦吗? 做一次 setup-ssh-persistent,之后重启只需 reconnect <新端口>,十秒内搞定。

Q:换了新 AutoDL 实例(不是重启,是新租的),怎么办? 新实例需要重新 setup-ssh。流程:reconnect <新地址> <新端口> → 看到连接失败提示 → setup-ssh 输入密码 → 完成。

Q:公钥复制到多台服务器安全吗? 完全安全。公钥就像一把锁,私钥(钥匙)永远留在你本地,不会泄露。

About

Unified shell script for managing remote GPU servers: SSHFS auto-mount, SSH setup, inference server management. Supports AutoDL and custom servers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages