ssh命令速查

ssh命令速查

#tech / ops / linux #type / howto #status / growing

[!info] related notes


SSH 常用命令速查表

以下表格按 使用场景分类,整理了 SSH 核心命令(含密钥认证相关操作),包含命令格式、参数说明及实战示例,便于日常查阅和使用。

场景分类命令格式参数 / 选项说明实战示例
一、基础远程登录
1. 密码认证登录ssh [选项] 用户名@服务器IP/域名 -p 端口号- -p 端口号:指定 SSH 服务端口(默认 22,可选)- 无选项:默认密码验证ssh ubuntu@192.168.1.100(默认 22 端口)ssh root@server.com -p 2222(指定 2222 端口)
2. 密钥认证登录ssh [选项] 用户名@服务器IP/域名 -p 端口号 -i 私钥路径- -i 私钥路径:指定本地私钥文件(若私钥非默认路径 ~/.ssh/id_rsa,必须添加)- 免密:需提前将公钥上传至服务器ssh ubuntu@192.168.1.100 -i ~/.ssh/my_ssh_key(用自定义私钥登录)ssh centos@10.0.0.5(私钥在默认路径,直接免密登录)
3. 远程执行单命令ssh 用户名@服务器IP “命令内容”双引号包裹远程命令,支持管道、变量(需注意转义特殊字符)ssh ubuntu@192.168.1.100 “df -h”(查看远程磁盘占用)`ssh root@server.com “cat /etc/os-release
二、密钥认证配置
1. 生成密钥对ssh-keygen [选项] -f 密钥文件路径- -f 密钥文件路径:指定密钥保存路径(默认 ~/.ssh/id_rsa)- -t rsa:指定算法(默认 RSA,可选 ECDSA 等)- -C “备注”:添加密钥备注(如邮箱)ssh-keygen -t rsa -f ~/.ssh/my_key -C “my-server-key”(生成名为 my_key 的 RSA 密钥对)
2. 上传公钥到服务器ssh-copy-id [选项] 用户名@服务器IP -p 端口号 -i 公钥路径- -i 公钥路径:指定本地公钥文件(默认 ~/.ssh/id_rsa.pub)- 自动将公钥追加到服务器 ~/.ssh/authorized_keysssh-copy-id ubuntu@192.168.1.100(默认公钥上传)ssh-copy-id -i ~/.ssh/my_key.pub root@server.com -p 2222(指定公钥和端口)
3. 验证密钥权限chmod [权限] 私钥文件/公钥文件- 私钥权限必须为 600(仅所有者可读可写,防止泄露)- 公钥权限可设为 644(所有者可读,其他可读取)chmod 600 ~/.ssh/my_key(修复私钥权限)chmod 644 ~/.ssh/my_key.pub(修复公钥权限)
三、文件传输(基于 SSH)
1. scp 上传文件scp -P 端口号 -i 私钥路径 本地文件路径 用户名@服务器IP:服务器目标路径- -P 端口号:大写 P(区别于 ssh 的小写 p),指定端口- -r:递归传输目录(可选)- -i 私钥路径:密钥认证(可选,密码认证省略)scp -P 2222 -i ~/.ssh/my_key ~/local.txt ubuntu@192.168.1.100:/home/ubuntu/(上传文件到服务器)scp -r ~/local_dir root@server.com:/tmp/(递归上传目录,默认端口)
2. scp 下载文件scp -P 端口号 -i 私钥路径 用户名@服务器IP:服务器文件路径 本地目标路径参数同上传,仅交换 “本地路径” 和 “服务器路径”scp -P 2222 ubuntu@192.168.1.100:/home/ubuntu/remote.txt ~/downloads/(下载文件到本地)scp -r -i ~/.ssh/my_key root@server.com:/var/log/ ~/log_backup/(下载日志目录)
3. sftp 连接sftp -P 端口号 -i 私钥路径 用户名@服务器IP交互式文件传输,支持 ls/cd/put/get 等命令- -P 端口号:指定端口,-i 私钥路径:密钥认证sftp -P 2222 ubuntu@192.168.1.100(密码认证连接 sftp)sftp -i ~/.ssh/my_key root@server.com(密钥认证连接 sftp)
四、端口转发(隧道)
1. 本地端口转发ssh -L 本地端口:目标服务IP:目标服务端口 用户名@服务器IP -p SSH端口 -N- -L 本地端口:目标IP:目标端口:本地端口映射到远程目标服务- -N:仅建立隧道,不登录(可选,后台运行用)- 用于访问远程内网服务(如数据库)ssh -L 3306:10.0.0.2:3306 ubuntu@192.168.1.100 -N(本地 3306 映射到内网 MySQL 服务)ssh -L 8080:172.17.0.3:80 root@server.com -p 2222 -N(本地 8080 映射到远程内网 Web 服务)
2. 远程端口转发ssh -R 远程服务器端口:本地服务IP:本地服务端口 用户名@服务器IP -p SSH端口 -N- -R 远程端口:本地IP:本地端口:远程服务器端口映射到本地服务- 用于外部通过服务器访问本地服务(如本地开发环境)ssh -R 8080:localhost:8080 ubuntu@192.168.1.100 -N(服务器 8080 映射到本地 8080 Web 服务)ssh -R 5432:127.0.0.1:5432 root@server.com -p 2222 -N(服务器 5432 映射到本地 PostgreSQL 服务)
五、其他常用操作
1. 查看 SSH 版本ssh -V大写 V,查看客户端版本(服务端版本需登录后执行 sshd -V)ssh -V(输出示例:OpenSSH_8.2p1 Ubuntu-4ubuntu0.9)
2. 清理 known_hostsssh-keygen -R 服务器IP/域名删除客户端缓存的服务器旧公钥(解决 “Host key verification failed” 错误)ssh-keygen -R 192.168.1.100(删除 IP 对应的旧公钥)ssh-keygen -R server.com(删除域名对应的旧公钥)
3. 后台保持连接ssh -o ServerAliveInterval=60 用户名@服务器IP-o ServerAliveInterval=60:每 60 秒发送一次心跳包,防止连接超时断开ssh -o ServerAliveInterval=60 ubuntu@192.168.1.100(长时间操作时保持连接)

表格使用说明

  1. 参数优先级:命令中 选项(如 -i、-P)需紧跟 ssh/scp 命令,用户名@服务器IP 放在最后(端口号 -p 除外,需紧跟服务器地址)。
  2. 密钥认证注意事项
  • 私钥文件必须保存在本地,且权限严格设为 600(否则 SSH 会拒绝使用,提示 “Permissions too open”)。
  • 若服务器修改了 SSH 端口,所有命令(含 ssh-copy-id、scp)都需添加 -p 端口号(scp 用 -P 端口号,大写 P)。
  1. 后台运行隧道:端口转发命令添加 -fN 选项可后台运行(-f 后台,-N 不登录),示例:ssh -fN -L 3306:10.0.0.2:3306 ubuntu@192.168.1.100,关闭时需用 ps aux | grep ssh 找到进程并 kill。
创建于 2025/1/1 更新于 2026/5/27