用途
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
限制
资料未提供关于平台兼容性、版本要求或具体限制的更多信息。