linux Cheatsheet

SSH 连接与配置速查表

SSH 连接与配置一页速查:ssh -i/-p/-vvv 登录调试、ssh-keygen 与 ssh-copy-id 密钥管理、~/.ssh/config 别名与 ProxyJump 跳板、-L/-R/-D 端口转发与 SOCKS 代理,免密登录和开隧道直接对照。

把 SSH 登录、密钥管理、配置文件、端口转发和代理跳板按组整理成一页,免密登录和开隧道时直接对照。

ssh密钥隧道linux

连接与认证

  • ssh user@host
    默认 22 端口登录,user 省略时用当前用户名
  • ssh -p 2222 user@host
    指定端口,服务器改了端口时用
  • ssh -i ~/.ssh/id_ed25519 user@host
    指定私钥登录,多密钥时常用
  • ssh -vvv user@host
    打印详细调试信息,认证失败时排查用
  • ssh -o ConnectTimeout=5 user@host
    设置连接超时,防止卡死

密钥管理

  • ssh-keygen -t ed25519 -C "tom@example.com"
    生成 ed25519 密钥,比 RSA 更短更快
  • ssh-keygen -t rsa -b 4096 -C "tom@example.com"
    生成 RSA 4096 位密钥,兼容老服务器
  • ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
    把公钥推到服务器,实现免密登录
  • ssh-keygen -lf ~/.ssh/id_ed25519.pub
    查看密钥指纹和长度,核对服务器 host key 用
  • eval $(ssh-agent) && ssh-add ~/.ssh/id_ed25519
    启动 agent 并加载私钥,避免重复输密码

配置文件 ~/.ssh/config

  • Host prod
    定义主机别名,后续 ssh prod 直接连,省去记长命令
  • HostName 1.2.3.4
    实际连接的 IP 或域名
  • User deploy
    默认登录用户,省去每次 user@host
  • IdentityFile ~/.ssh/id_ed25519
    指定该主机使用的私钥
  • ProxyJump bastion
    通过跳板机连目标机,替代 ssh -t ssh -t 多层跳转
  • LocalForward 8080 127.0.0.1:80
    登录时自动建立本地端口转发

端口转发与代理

  • ssh -L 8080:127.0.0.1:80 user@host
    本地端口转发,访问本地 8080 等于访问远端 80
  • ssh -R 9090:127.0.0.1:80 user@host
    远程端口转发,把本地服务暴露到远端
  • ssh -D 1080 user@host
    动态 SOCKS5 代理,所有流量走远端
  • ssh -N -L 8080:127.0.0.1:80 user@host
    只转发不执行命令,开后台隧道用
  • ssh -J bastion user@internal
    通过跳板机直连内网机器,等价于 ProxyJump

容易踩的坑

  • 免密登录用 ssh-copy-id 推公钥,手动拼 authorized_keys 容易踩权限和格式坑。
  • ~/.ssh 目录权限要 700,私钥要 600,权限太松 ssh 会拒绝使用。
  • 端口转发加 -N -f 可放到后台跑,但记得用 ssh -O exit 或 kill 关掉,避免遗留进程。