linux Cheatsheet
SSH 连接与配置速查表
SSH 连接与配置一页速查:ssh -i/-p/-vvv 登录调试、ssh-keygen 与 ssh-copy-id 密钥管理、~/.ssh/config 别名与 ProxyJump 跳板、-L/-R/-D 端口转发与 SOCKS 代理,免密登录和开隧道直接对照。
把 SSH 登录、密钥管理、配置文件、端口转发和代理跳板按组整理成一页,免密登录和开隧道时直接对照。
连接与认证
- 默认 22 端口登录,user 省略时用当前用户名
ssh user@host - 指定端口,服务器改了端口时用
ssh -p 2222 user@host - 指定私钥登录,多密钥时常用
ssh -i ~/.ssh/id_ed25519 user@host - 打印详细调试信息,认证失败时排查用
ssh -vvv user@host - 设置连接超时,防止卡死
ssh -o ConnectTimeout=5 user@host
密钥管理
- 生成 ed25519 密钥,比 RSA 更短更快
ssh-keygen -t ed25519 -C "tom@example.com" - 生成 RSA 4096 位密钥,兼容老服务器
ssh-keygen -t rsa -b 4096 -C "tom@example.com" - 把公钥推到服务器,实现免密登录
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host - 查看密钥指纹和长度,核对服务器 host key 用
ssh-keygen -lf ~/.ssh/id_ed25519.pub - 启动 agent 并加载私钥,避免重复输密码
eval $(ssh-agent) && ssh-add ~/.ssh/id_ed25519
配置文件 ~/.ssh/config
- 定义主机别名,后续 ssh prod 直接连,省去记长命令
Host prod - 实际连接的 IP 或域名
HostName 1.2.3.4 - 默认登录用户,省去每次 user@host
User deploy - 指定该主机使用的私钥
IdentityFile ~/.ssh/id_ed25519 - 通过跳板机连目标机,替代 ssh -t ssh -t 多层跳转
ProxyJump bastion - 登录时自动建立本地端口转发
LocalForward 8080 127.0.0.1:80
端口转发与代理
- 本地端口转发,访问本地 8080 等于访问远端 80
ssh -L 8080:127.0.0.1:80 user@host - 远程端口转发,把本地服务暴露到远端
ssh -R 9090:127.0.0.1:80 user@host - 动态 SOCKS5 代理,所有流量走远端
ssh -D 1080 user@host - 只转发不执行命令,开后台隧道用
ssh -N -L 8080:127.0.0.1:80 user@host - 通过跳板机直连内网机器,等价于 ProxyJump
ssh -J bastion user@internal
容易踩的坑
- 免密登录用 ssh-copy-id 推公钥,手动拼 authorized_keys 容易踩权限和格式坑。
- ~/.ssh 目录权限要 700,私钥要 600,权限太松 ssh 会拒绝使用。
- 端口转发加 -N -f 可放到后台跑,但记得用 ssh -O exit 或 kill 关掉,避免遗留进程。