SuperAPI AI 工具集

ssh

部署与运维

查看项目

更新于 10-15 14:28

技能介绍

用途

SSH 技能用于安全远程访问,核心能力包括安全 Shell 连接、密钥管理、隧道(端口转发)和文件传输。当需要连接服务器、管理 SSH 密钥、设置端口转发或传输文件时使用。

主要能力与常用命令

连接

  • 连接服务器:ssh user@hostname
  • 使用指定密钥连接:ssh -i ~/.ssh/my_key user@hostname
  • 指定端口连接:ssh -p 2222 user@host
  • 运行远程命令:ssh user@host "cd /app && git status"
  • 交互式远程命令:ssh -t user@host "htop"
  • 调试连接:ssh -vvv user@host

文件传输

  • 复制文件到远程:scp local.txt user@host:/remote/path/
  • 从远程复制文件:scp user@host:/path/file.txt ./
  • 同步目录(优先于 scp):rsync -avzP ./local/ user@host:/remote/

跳板机连接

  • 单跳(堡垒机):ssh -J jumphost user@internal-server
  • 多跳:ssh -J jump1,jump2 user@internal-server

端口转发

  • 本地端口转发(本地访问远程服务):ssh -L 8080:localhost:80 user@host
  • 通过跳板机访问数据库:ssh -L 5432:db-server:5432 user@jumphost
  • 远程端口转发:ssh -R remote:local:port user@host
  • SOCKS 代理:ssh -D 1080 user@host

密钥生成与部署

  • 生成 Ed25519 密钥(推荐):ssh-keygen -t ed25519 -C "you@example.com"
  • 复制公钥到服务器:ssh-copy-id user@host

SSH Agent

  • 启动 agent:eval "$(ssh-agent -s)"
  • 添加密钥:ssh-add ~/.ssh/id_ed25519
  • 使用 macOS 钥匙串添加:ssh-add --apple-use-keychain ~/.ssh/id_ed25519
  • 列出已加载密钥:ssh-add -l

使用方式

SSH 配置文件

位置:~/.ssh/config。示例:

Host myserver
    HostName 192.168.1.100
    User deploy
    Port 22
    IdentityFile ~/.ssh/myserver_key
    ForwardAgent yes

Host internal
    HostName 10.0.0.50
    User deploy
    ProxyJump bastion

配置后可直接使用 ssh myserver 连接。

连接复用(加快重连)

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

需先创建目录:mkdir -p ~/.ssh/sockets

在 AGENTS.md 中引用

可将以下内容复制到项目的 AGENTS.md:

### SSH Access

SSH is configured for these servers:

- **Production:** `ssh prod` (via ~/.ssh/config)
- **Staging:** `ssh staging`

Common operations:

ssh prod "cd /app && git status"      # Check deploy status
rsync -avzP ./dist/ prod:/app/dist/   # Sync files
ssh -L 5432:localhost:5432 prod       # DB tunnel

Keys: `~/.ssh/id_ed25519` (add with `ssh-add`)

适用场景

  • 连接远程服务器执行命令或交互式操作
  • 通过跳板机访问内网服务器
  • 设置本地/远程端口转发或 SOCKS 代理
  • 生成、部署和管理 SSH 密钥
  • 在本地与远程之间复制或同步文件
  • 通过 ~/.ssh/config 简化连接配置

安全建议

  • 使用 Ed25519 密钥(比 RSA 更快、更安全)
  • 在服务器上设置 PasswordAuthentication no
  • 密钥使用密码短语加密
  • 使用 ssh-agent 避免重复输入密码短语
  • 在 authorized_keys 中使用 command= 限制密钥用途

参考文档

  • 完整命令参考:COMMANDS.md
  • 端口转发详情:TUNNELS.md
  • 密钥管理:KEYS.md

限制

资料未提供关于平台兼容性、版本要求或具体限制的更多信息。