关于 ssh
面向使用 SSH 进行远程访问的命令行参考技能,覆盖连接、密钥管理、隧道和文件传输。内容还包括跳板机、SSH 配置及常见安全实践。
主要功能
- 01通过 SSH 连接远程主机并执行命令
- 02生成、部署和使用 SSH 密钥
- 03配置跳板机与端口转发
- 04使用 scp 和 rsync 传输文件
- 05设置 SSH 配置与连接复用
适用场景
- 01通过跳板机访问内网服务器
- 02将远程服务端口转发到本地
- 03在本地与远程主机间复制或同步文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dicklesworthstone/ agent_flywheel_clawdbot_skills_and_integrations --skill ssh安装后在 Claude Code 中输入/ssh确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/COMMANDS.mdKEYS.mdTUNNELS.md详细介绍
SSH — 安全远程访问
核心能力: 安全 Shell 连接、密钥管理、隧道和文件传输。
快速开始
# Connect to server
ssh user@hostname
# Connect with specific key
ssh -i ~/.ssh/my_key user@hostname
# Run remote command
ssh user@host "cd /app && git status"
# Copy file to remote
scp local.txt user@host:/remote/path/
# Sync directory (preferred over scp)
rsync -avzP ./local/ user@host:/remote/
精确提示词 — 常见工作流
通过跳板主机连接
# Single jump (bastion)
ssh -J jumphost user@internal-server
# Multiple jumps
ssh -J jump1,jump2 user@internal-server
本地端口转发(在本地访问远程服务)
# Access remote:80 via localhost:8080
ssh -L 8080:localhost:80 user@host
# Access db-server:5432 via localhost:5432 through jumphost
ssh -L 5432:db-server:5432 user@jumphost
生成并部署密钥
# Generate Ed25519 key (recommended)
ssh-keygen -t ed25519 -C "[email protected]"
# Copy public key to server
ssh-copy-id user@host
基本命令
| 任务 | 命令 |
|---|---|
| 连接 | ssh user@host |
| 指定端口连接 | ssh -p 2222 user@host |
| 使用密钥连接 | ssh -i ~/.ssh/key user@host |
| 运行远程命令 | ssh user@host "command" |
| 交互式远程会话 | ssh -t user@host "htop" |
| 复制到远程主机 | scp file.txt user@host:/path/ |
| 从远程主机复制 | scp user@host:/path/file.txt ./ |
| 同步到远程主机 | rsync -avzP ./local/ user@host:/remote/ |
| 本地转发 | ssh -L local:remote:port user@host |
| 远程转发 | ssh -R remote:local:port user@host |
| SOCKS 代理 | ssh -D 1080 user@host |
| 跳板主机 | ssh -J bastion user@internal |
| 生成密钥 | ssh-keygen -t ed25519 |
| 将密钥复制到服务器 | ssh-copy-id user@host |
| 调试连接 | ssh -vvv user@host |
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
SSH Agent
# Start agent
eval "$(ssh-agent -s)"
# Add key
ssh-add ~/.ssh/id_ed25519
# Add with macOS keychain
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
# List loaded keys
ssh-add -l
安全提示
- 使用 Ed25519 密钥(比 RSA 更快、更安全)
- 在服务器上设置
PasswordAuthentication no - 使用密码短语加密密钥
- 使用
ssh-agent,避免反复输入密码短语 - 使用 authorized_keys 中的
command=限制密钥用途
AGENTS.md 说明
将以下内容复制到项目的 AGENTS.md 中:
### SSH Access
SSH is configured for these servers:
- **Production:** `ssh prod` (via ~/.ssh/config)
- **Staging:** `ssh staging`
Common operations:
\`\`\`bash
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`)
参考资料
| 主题 | 参考资料 |
|---|---|
| 完整命令参考 | COMMANDS.md |
| 端口转发详情 | TUNNELS.md |
| 密钥管理 | KEYS.md |
评论
支持 Markdown