SSH 命令速查表 - SSH 连接与配置常用命令大全

面向要免密登录、从跳板机进入内网、或把远程端口映射到本机调试的开发与运维。SSH 的价值在密钥与 config 的复用:把常用的 Host、跳板、端口转发固化进 ~/.ssh/config,就不必每次敲一长串参数。读完能生成并正确授权密钥对实现免密登录,用 ProxyJump 一层层跨过堡垒机,用 -L 把一个远程服务暴露到本机 localhost 上调试。

系统与运维·共 21 条命令·最后更新 2026-07-21
ssh密钥隧道linux

典型使用场景

远程登录与文件传输、免密登录(密钥)配置、端口转发(隧道)、排查连接超时、权限过宽被拒(Permission denied (publickey))与主机指纹变更告警。

连接与认证 5

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
设置连接超时,防止卡死

密钥管理 5

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 6

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
登录时自动建立本地端口转发

端口转发与代理 5

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

参数矩阵

参数作用示例
-i指定私钥文件ssh -i ~/.ssh/id_ed25519 user@host
-p指定端口(默认 22)ssh -p 2222 user@host
-L本地端口转发隧道ssh -L 8080:127.0.0.1:80 user@host
-R远程端口转发隧道ssh -R 9000:localhost:3000 user@host
-N只建隧道不打开 shellssh -N -L 5432:localhost:5432 db@host
-f后台运行ssh -fN -L 8080:localhost:80 user@host
scp -r递归拷贝目录scp -r ./app user@host:/srv/app
StrictHostKeyChecking控制主机指纹校验策略ssh -o StrictHostKeyChecking=no user@host
ProxyJump经跳板机连接目标ssh -J jump@bastion user@host
IdentitiesOnly只用指定密钥,避免密钥过多被拒ssh -o IdentitiesOnly=yes -i key user@host

易错点与避坑指南

现象密钥登录报 Permission denied (publickey)。

原因私钥权限过宽(如 644)、authorized_keys 权限不对,或服务端 PubkeyAuthentication 关闭。

处置chmod 600 ~/.ssh/id_* 与 700 ~/.ssh;服务端确认 PubkeyAuthentication yes 与 AuthorizedKeysFile 路径。

现象连接长时间无响应后超时。

原因网络不可达、防火墙拦截 22、或 UseDNS 反向解析慢。

处置先 ping/ telnet host 22 验证连通;服务端设 UseDNS no 与 GSSAPIAuthentication no 加速握手。

现象WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

原因目标主机重装/换 IP,指纹与 known_hosts 不符(可能中间人)。

处置确属正常变更后,ssh-keygen -R host 删除旧记录再重连;异常变更须先核实再继续。

现象scp/ssh 因客户端有多个密钥被服务端拒绝。

原因ssh 依次尝试所有密钥,触发服务端 MaxAuthTries 限制。

处置用 -o IdentitiesOnly=yes -i 指定唯一密钥;或在 ~/.ssh/config 按主机绑定 IdentityFile。

现象隧道建立后端口仍连不上。

原因转发目标地址在远端不是 localhost,或 BindAddress 受限。

处置确认 -L 本地:远端host:远端port 的远端地址在服务器本地可达;检查 GatewayPorts 设置。

现象root 直接登录被拒。

原因PermitRootLogin 设为 no(安全最佳实践)。

处置用普通用户登录后 sudo;确需 root 时设 PermitRootLogin prohibit-password 并仅用密钥。

排障路径

  1. 1详细输出连接过程

    ssh -v user@host

    看到是认证失败、握手慢还是连接被拒,定位阶段。

  2. 2验证端口连通性

    nc -zv host 22

    区分网络层不通与服务未监听。

  3. 3清理失效主机指纹后重连

    ssh-keygen -R host

    仅在确认主机变更合法后执行。

  4. 4测试免密登录是否生效

    ssh -o BatchMode=yes user@host echo ok

    BatchMode 下不会弹出密码提示,可直接验证密钥登录。

提示

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

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们