Linux 服务器 SSH 免密登录 + rsync /scp/sftp 完整详解手册

发布时间:2026/6/27 20:37:03
Linux 服务器 SSH 免密登录 + rsync /scp/sftp 完整详解手册 一、前置核心SSH 免密登录原理所有工具底层都依赖它1. 免密原理客户端生成非对称密钥对私钥本地保管绝不外传、公钥.pub发给目标机器目标机器把客户端公钥写入~/.ssh/authorized_keys客户端 SSH 连接时自动用私钥签名服务端匹配公钥无需输入密码登录2. 一键免密配置完整步骤通用所有传输工具步骤 1客户端生成密钥一路回车不设密钥密码最方便免密# rsa算法通用兼容所有老机器 ssh-keygen -t rsa # 新安全算法ed25519推荐现代系统优先 ssh-keygen -t ed25519生成路径默认~/.ssh/id_ed25519私钥、~/.ssh/id_ed25519.pub公钥步骤 2推送公钥到目标服务器两种方式方式 Assh-copy-id最简单推荐# 格式 ssh-copy-id 用户名目标IP ssh-copy-id root192.168.10.20 # 指定端口对方ssh不是22端口 ssh-copy-id -p 2222 root192.168.10.20自动创建.ssh目录、授权文件、修正权限。方式 B手动推送无 ssh-copy-id 工具时用# 把公钥追加到对方授权文件 cat ~/.ssh/id_ed25519.pub | ssh root192.168.10.20 mkdir -p ~/.ssh cat ~/.ssh/authorized_keys步骤 3关键权限权限错误免密直接失效客户端本地权限chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub目标服务器权限chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys步骤 4测试免密登录ssh root192.168.10.20 # 自定义端口 ssh -p2222 root192.168.10.20无需输密码即配置成功rsync/scp/sftp/sshfs 全部自动复用这套免密。3. 进阶密钥带密码安全场景生成密钥时设置密码免密传输会要求输密钥密码可搭配ssh-agent缓存私钥密码# 启动代理 eval $(ssh-agent) # 加载私钥输入一次密码全程生效 ssh-add ~/.ssh/id_ed25519二、四大远程文件传输工具对比总览工具底层协议核心优势短板适用场景scpssh语法简单、系统默认自带、小文件快速复制全量传输、无增量、不校验文件属性、大文件慢少量小文件一次性传输、临时拷贝rsyncssh (rsync 协议)增量同步、断点续传、校验文件、保留权限软硬链接、压缩传输参数较多初次上手复杂大目录、定时备份、服务器同步、增量更新sftpssh交互式操作、支持浏览目录、删除重命名、类 ftp 操作脚本批量同步不如 rsync 高效手动交互式管理远程文件sshfsssh把远程服务器目录挂载成本地磁盘网络中断挂载失效不适合超大文件备份临时读写远程目录像操作本地文件夹三、scp 完整详解SSH 免密直接生效语法格式# 本地 → 远程 scp [参数] 本地文件/目录 用户名IP:远程路径 # 远程 → 本地 scp [参数] 用户名IP:远程文件/目录 本地路径 # 远程A → 远程B中转传输 scp root10.0.0.1:/tmp/a.txt root10.0.0.2:/tmp/常用核心参数参数作用-r递归传输目录文件夹必加-P指定 SSH 端口大写 P区别 ssh 小写 p-C传输过程开启压缩节省带宽-p保留文件修改时间、权限-q静默输出不打印过程实操示例免密环境直接运行# 1. 推送单个文件到远程 scp /data/test.txt root192.168.10.20:/opt/ # 2. 拉取远程文件到本地 scp root192.168.10.20:/opt/log.tar.gz /data/ # 3. 传输文件夹-r自定义ssh端口2222 scp -r -P 2222 /data/www root192.168.10.20:/home/ # 4. 压缩静默传输目录 scp -rCq /data/backup root192.168.10.20:/mnt/scp 致命缺点不适合备份场景每次传输完整拷贝所有文件不对比差异修改少量文件也要重传全部无断点续传网络中断需要从头传输无法过滤排除指定文件 / 目录四、rsync 重点详解生产首选SSH 免密模式rsync 默认两种传输模式ssh 模式日常 99% 使用复用 ssh 免密rsync 文件 userip:路径rsync daemon 模式独立端口企业大规模集群同步用文末补充基础语法ssh 免密传输# 本地推送至远程 rsync [参数] 本地路径 user目标IP:远程目录 # 远程拉取到本地 rsync [参数] user目标IP:远程目录 本地路径必记核心参数生产标准组合-avz-a归档模式最关键等价-rlptgoDr 递归目录l 保留软链接p 保留权限t 保留修改时间g/o 保留属组属主D 保留设备文件-vverbose 打印详细传输日志脚本排错必备-z传输时压缩跨机房低带宽必开-P--progress --partial显示传输进度 断点续传超大文件神器--delete危险参数删除目标端存在、本地不存在的文件做镜像备份用--excludexxx排除文件 / 目录支持通配符--port2222指定 ssh 端口--bwlimit10000限速单位 KB/s避免占满带宽高频实操示例免密直接执行# 1. 标准推送本地目录到远程增量、压缩、进度、保留属性 rsync -avzP /data/www root192.168.10.20:/opt/www/ # 2. 拉取远程日志目录到本地限速5MB/s rsync -avzP --bwlimit5120 root192.168.10.20:/var/log/ /local/log_backup/ # 3. 排除缓存、日志目录同步 rsync -avzP --excludetmp --exclude*.log /data root192.168.10.20:/mnt/ # 4. 镜像同步目标和本地完全一致多余文件删除 rsync -avzP --delete /data root192.168.10.20:/mnt/data/ # 5. SSH非22端口同步 rsync -avzP --port2222 /backup root192.168.10.20:/data/rsync 优势总结增量传输只发送文件差异部分重复同步速度极快断点续传网络断了不用重传整个文件完整保留 Linux 文件权限、属主、软硬链接、时间戳支持过滤、限速、删除冗余文件完美适配定时备份脚本可配合 crontab 做定时自动同步免密是前提五、sftp 交互式文件传输SSH 免密可用底层同样 SSH 协议免密登录后无需密码适合手动浏览操作。1. 交互式登录# 默认22端口 sftp root192.168.10.20 # 自定义端口 sftp -oPort2222 root192.168.10.20登录后常用交互命令ls、lls # 远程目录 / 本地目录 cd、lcd # 切换远程目录 / 本地目录 get 远程文件 # 下载到本地 put 本地文件 # 上传到远程 mkdir/rm/rmdir # 创建、删除文件目录 exit # 退出2. 非交互脚本批量传输适合简单自动化# 脚本上传单个文件 sftp -oPort22 root192.168.10.20 EOF put /data/test.txt /opt/ EOF # 批量下载 sftp root192.168.10.20 EOF get /opt/*.log /local/log/ EOF缺点不支持增量大批量同步性能远不如 rsync。六、sshfs 远程目录本地挂载免密读写把远程服务器文件夹挂载成本地磁盘操作如同本地文件底层 ssh。1. 安装工具# CentOS/RHEL yum install sshfs -y # Debian/Ubuntu apt install sshfs -y2. 挂载 卸载免密直接生效# 创建本地挂载点 mkdir /mnt/remote_data # 挂载远程目录 sshfs root192.168.10.20:/data /mnt/remote_data -o port2222 # 卸载 fusermount -u /mnt/remote_data适用场景临时查看、编辑远程少量文件不适合大批量同步备份。七、补充rsync daemon 模式无 ssh独立 873 端口适用于大规模内网集群同步不用 ssh 免密单独配置 rsync 账号简单介绍服务端配置/etc/rsyncd.conf定义共享模块、权限、白名单服务端启动rsync --daemon客户端同步语法无 用双冒号rsync -avz /data rsync://192.168.10.20/backup/ # 简写 rsync -avz /data 192.168.10.20::backup/个人 / 中小型服务器同步优先用 ssh 免密 rsync无需额外开放端口安全简单。八、生产使用选型总结直接照着选定时备份、服务器文件同步、大目录增量更新 → rsync -avzPssh 免密临时拷贝少量小文件、一次性传输 → scp手动登录浏览、交互式上传下载文件 → sftp需要直接读写远程目录像本地文件夹操作 → sshfs九、常见排错免密失效 / 传输报错仍提示输密码检查.ssh目录、私钥、authorized_keys 权限必须 700/600SSH 自定义端口同步失败scp 用-Prsync 用--portsftp 用-oPortrsync 同步丢失权限必须加-a参数传输慢添加-z压缩配合--bwlimit合理限速目标文件删不掉--delete参数慎用先去掉测试同步差异十、自动化示例crontab 定时免密 rsync 备份脚本#!/bin/bash # backup.sh SRC/data/www DSTroot192.168.10.20:/mnt/backup/www LOG/var/log/rsync_backup.log rsync -avzP --delete $SRC $DST $LOG 21加入定时任务每天凌晨 2 点自动同步crontab -e 0 2 * * * /script/backup.sh依赖提前完成 SSH 免密配置脚本无需手动输入密码。