news 2026/5/1 7:22:56

【Linux进阶篇】SSH密钥认证保姆级实操:告别密码登录,远程连接更安全高效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux进阶篇】SSH密钥认证保姆级实操:告别密码登录,远程连接更安全高效


🍃 予枫:个人主页

📚 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》
💻 Debug 这个世界,Return 更好的自己!

引言

做Linux运维或后端开发,远程连接服务器是日常操作。密码登录不仅要反复输入密码,还存在被暴力破解的风险;而SSH密钥认证,既能实现免密登录提升效率,又能通过加密机制保障连接安全。今天就从原理到实操,拆解SSH对称与非对称加密,手把手教你用ssh-keygen生成密钥对、ssh-copy-id配置免密,再对比scp与rsync的远程传输用法,新手也能快速上手。

文章目录

  • 引言
  • 一、SSH远程与密钥认证核心原理
    • 1.1 对称加密
    • 1.2 非对称加密
    • 1.3 SSH密钥认证的完整流程(必懂)
  • 二、免密登录配置(ssh-keygen+ssh-copy-id实操)
    • 2.1 第一步:客户端生成密钥对(ssh-keygen)
      • 执行结果说明:
    • 2.2 第二步:将公钥上传到服务器(ssh-copy-id)
      • 手动上传备用方案(如果ssh-copy-id不可用):
    • 2.3 第三步:验证免密登录
  • 三、scp与rsync远程文件传输同步详解
    • 3.1 scp命令(简单直接,适合少量文件传输)
      • 核心用法(3种常用场景)
      • scp优势与不足
    • 3.2 rsync命令(高效灵活,适合大量文件/同步场景)
      • 核心用法(常用场景)
      • rsync优势与不足
      • scp与rsync对比总结(建议收藏)
  • 四、常见问题与避坑技巧(必看)
  • 五、总结

一、SSH远程与密钥认证核心原理

SSH(Secure Shell)是一种加密的网络传输协议,核心作用是实现客户端与服务器之间的安全远程连接,替代了明文传输的Telnet协议,避免了数据被监听、篡改的风险。其加密机制主要分为两种,对应不同的使用场景:

1.1 对称加密

对称加密又称单密钥加密,核心特点是「加密和解密使用同一个密钥」。

  • 原理:客户端与服务器协商好一个共同的密钥,客户端发送数据时用该密钥加密,服务器接收后用同一个密钥解密;反之亦然。
  • 优势:加密、解密速度极快,适合大量数据传输场景。
  • 不足:密钥的传输的过程存在安全隐患——如果密钥在传输中被截取,攻击者就能破解所有加密数据。

小贴士:SSH不会单独使用对称加密,通常会结合非对称加密,解决密钥传输的安全问题。

1.2 非对称加密

非对称加密又称双密钥加密,核心特点是「加密和解密使用不同的密钥」,分为公钥(Public Key)和私钥(Private Key):

  • 私钥:仅保存在客户端本地,是核心密钥,绝对不能泄露(相当于你的“身份证”,只有你自己拥有)。
  • 公钥:可以公开传输,甚至可以分享给任意服务器(相当于你的“名片”,别人可以持有,但无法用它冒充你)。
  • 原理:用公钥加密的数据,只能用对应的私钥解密;用私钥加密的数据,只能用对应的公钥解密。SSH密钥认证,就是基于这个原理实现的。

1.3 SSH密钥认证的完整流程(必懂)

  1. 客户端通过ssh-keygen生成一对密钥(公钥+私钥);
  2. 客户端将自己的公钥,通过ssh-copy-id或手动方式上传到目标服务器;
  3. 客户端发起SSH连接请求时,服务器会生成一个随机字符串,并用客户端上传的公钥加密,发送给客户端;
  4. 客户端接收后,用自己的私钥解密该字符串,再将解密后的结果发送回服务器;
  5. 服务器验证客户端返回的结果,与自己生成的随机字符串一致,就允许客户端免密登录。

重点:整个过程中,私钥始终保存在客户端,从未传输过,因此即使公钥被截取,也无法破解连接,安全性拉满 ✅

二、免密登录配置(ssh-keygen+ssh-copy-id实操)

实操环境:客户端(Linux/Mac)、服务器(Linux,CentOS/Ubuntu均可),全程命令行操作,步骤简单,跟着敲就行,建议收藏备用!

2.1 第一步:客户端生成密钥对(ssh-keygen)

打开客户端终端,输入以下命令,无需修改默认参数,全程回车即可:

ssh-keygen -t rsa
  • 命令解析:
    • ssh-keygen:生成SSH密钥对的核心命令;
    • -t rsa:指定加密算法为RSA(最常用、兼容性最好,也可选择ed25519,安全性更高)。

执行结果说明:

  1. 会提示你“指定密钥保存路径”,默认路径是~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥),直接回车即可;
  2. 会提示“设置密钥密码”(可选),如果设置,每次使用私钥登录时需要输入密码,进一步提升安全性;如果追求极致便捷,直接回车跳过(建议运维场景跳过,开发场景可设置);
  3. 执行完成后,进入~/.ssh目录,即可看到生成的两个密钥文件:
    • id_rsa:私钥,妥善保管,不要删除、不要泄露;
    • id_rsa.pub:公钥,后续需要上传到服务器。

2.2 第二步:将公钥上传到服务器(ssh-copy-id)

客户端终端输入以下命令,将公钥一键上传到目标服务器,无需手动复制粘贴:

ssh-copy-id 用户名@服务器IP
  • 示例:ssh-copy-id root@192.168.1.100(root是服务器用户名,192.168.1.100是服务器IP);
  • 首次执行时,会提示“确认连接服务器”,输入yes回车,再输入服务器的登录密码(仅这一次需要输密码,后续免密);
  • 执行成功后,会提示“number of key(s) added”,表示公钥已成功上传到服务器。

手动上传备用方案(如果ssh-copy-id不可用):

如果服务器禁止ssh-copy-id命令,可手动复制公钥内容到服务器,步骤如下:

  1. 客户端查看公钥内容:cat ~/.ssh/id_rsa.pub,复制输出的全部内容;
  2. 登录服务器,进入~/.ssh目录(如果没有该目录,执行mkdir ~/.ssh创建);
  3. 编辑authorized_keys文件(如果没有,执行touch ~/.ssh/authorized_keys创建):vim ~/.ssh/authorized_keys
  4. 将复制的公钥内容粘贴到文件中,保存退出(vim操作:按i编辑,粘贴后按Esc,输入:wq保存退出);
  5. 设置文件权限(关键,否则密钥认证无效):
    chmod700~/.sshchmod600~/.ssh/authorized_keys

2.3 第三步:验证免密登录

客户端终端输入SSH连接命令,无需输入密码,即可直接登录服务器:

ssh用户名@服务器IP
  • 示例:ssh root@192.168.1.100
  • 如果能直接进入服务器终端,说明免密登录配置成功!🎉
  • 温馨提示:配置完成后,建议点赞收藏,后续远程连接直接复制命令,省去输密码的麻烦。

三、scp与rsync远程文件传输同步详解

配置好SSH免密登录后,除了远程登录,我们还经常需要在客户端与服务器之间传输文件,scp和rsync是最常用的两个命令,各有优势,按需选择即可。

3.1 scp命令(简单直接,适合少量文件传输)

scp(Secure Copy)是基于SSH协议的文件传输命令,核心特点是「简单、稳定」,适合少量文件、单个文件的快速传输,用法和cp命令类似。

核心用法(3种常用场景)

  1. 客户端 → 服务器(上传文件):

    scp本地文件路径 用户名@服务器IP:服务器目标路径
    • 示例:scp ~/test.txt root@192.168.1.100:/root/(将本地家目录的test.txt,上传到服务器root目录下);
  2. 服务器 → 客户端(下载文件):

    scp用户名@服务器IP:服务器文件路径 本地目标路径
    • 示例:scp root@192.168.1.100:/root/data.zip ~/Downloads/(将服务器root目录的data.zip,下载到本地Downloads目录);
  3. 传输目录(加-r参数):

    # 客户端上传目录到服务器scp-r 本地目录路径 用户名@服务器IP:服务器目标路径# 示例:scp -r ~/project root@192.168.1.100:/root/

scp优势与不足

  • 优势:命令简单,无需额外安装(Linux/Mac默认自带),传输过程加密,安全性高;
  • 不足:不支持断点续传,如果传输大文件时中断,需要重新传输,效率较低。

3.2 rsync命令(高效灵活,适合大量文件/同步场景)

rsync(Remote Sync)也是基于SSH协议的工具,核心特点是「增量同步」,适合大量文件、大文件传输,以及定期同步场景,效率比scp更高。

核心用法(常用场景)

  1. 安装rsync(如果未安装):

    • CentOS:yum install rsync -y
    • Ubuntu:apt install rsync -y
    • 客户端和服务器都需要安装(部分系统默认已安装)。
  2. 客户端 → 服务器(上传/同步目录):

    rsync-avz 本地目录路径 用户名@服务器IP:服务器目标路径
    • 示例:rsync -avz ~/project root@192.168.1.100:/root/
    • 命令解析:
      • -a:归档模式,保留文件的权限、所有者、时间戳等属性,等同于-rlptgoD
      • -v:显示传输过程( verbose),可以看到哪些文件正在传输;
      • -z:传输时压缩文件,减少网络带宽占用,提升传输速度。
  3. 服务器 → 客户端(下载/同步目录):

    rsync-avz 用户名@服务器IP:服务器目录路径 本地目标路径
    • 示例:rsync -avz root@192.168.1.100:/root/logs ~/(将服务器logs目录,同步到本地家目录)。

rsync优势与不足

  • 优势:支持增量同步(只传输修改过的文件/内容),支持断点续传,传输大文件、大量文件时效率远超scp;
  • 不足:命令参数比scp多,入门稍复杂,但掌握-avz三个核心参数,就能满足90%的日常需求。

scp与rsync对比总结(建议收藏)

特性scprsync
核心功能简单文件传输增量文件同步+传输
断点续传不支持支持
压缩传输可选(-C参数)支持(-z参数)
传输效率适合少量/单个文件适合大量/大文件
易用性高(命令简单)中(核心参数易掌握)

总结:少量文件用scp,快速便捷;大量文件、定期同步用rsync,高效省带宽 ✅

四、常见问题与避坑技巧(必看)

  1. 配置免密登录后,仍然需要输密码?

    • 排查1:服务器~/.ssh目录权限是否为700,authorized_keys文件权限是否为600(权限过高/过低都会导致密钥认证失效);
    • 排查2:客户端上传的公钥,是否与服务器authorized_keys中的内容一致;
    • 排查3:客户端私钥路径是否正确(默认是 ~/.ssh/id_rsa,若修改过路径,需要用-i参数指定:ssh -i 私钥路径 用户名@服务器IP)。
  2. rsync传输时,提示“permission denied”?

    • 原因:服务器目标路径的权限不足,客户端用户没有写入权限;
    • 解决:修改服务器目标路径权限(如chmod 777 /root/temp),或切换到有写入权限的用户。
  3. 密钥丢失/泄露怎么办?

    • 私钥丢失:客户端重新执行ssh-keygen生成新的密钥对,重新上传公钥到服务器即可;
    • 私钥泄露:立即删除服务器authorized_keys中对应的公钥,重新生成密钥对并上传,避免攻击者利用泄露的私钥登录服务器。

五、总结

本文从SSH密钥认证的核心原理出发,拆解了对称加密与非对称加密的区别,详解了ssh-keygen生成密钥对、ssh-copy-id配置免密登录的完整实操步骤,再对比了scp与rsync两种远程传输工具的用法和场景,覆盖了Linux运维、后端开发中远程连接的高频需求。

掌握SSH密钥认证,既能告别反复输密码的麻烦,提升工作效率,又能大幅提升远程连接的安全性,避免密码被暴力破解的风险;而scp与rsync的灵活运用,能让远程文件传输、同步更高效。

新手建议先跟着实操步骤配置一遍免密登录,再尝试用scp、rsync传输文件,遇到问题可查看“常见问题”部分,基本都能解决。


✨ 我是予枫,关注我,下期带你解锁更多实用技术技巧!
💬 评论区留言:你在配置SSH免密时遇到过哪些坑?或者有更好的技巧,欢迎一起交流~
👍 觉得本文对你有帮助,记得点赞+收藏,避免下次找不到!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 1:09:22

AI+Python实操:高效撰写高质量网络小说指南

在网络小说创作中,创作者常常面临两大核心困境:一是灵感断层导致更新卡顿,二是重复打磨细节耗费大量时间,难以兼顾效率与内容质量。随着AI生成技术与编程工具的深度融合,利用编程调用AI模型,实现网络小说的…

作者头像 李华
网站建设 2026/4/28 8:27:18

钢丝上的智能突围:企业AI创新与安全的动态平衡之道(2024-2026前瞻版)

在生成式AI规模化落地、大模型国产化替代加速、全球监管趋严的三重浪潮下,人工智能已从“可选创新”升级为企业生存发展的“必选项”。企业对AI的依赖度越高,创新的步伐越快,就越容易陷入“创新狂飙”与“安全红线”的两难困境——如同走在一…

作者头像 李华
网站建设 2026/4/25 13:53:14

STM32WLE5 + MM8108-MF15457 组合模组设计方案(低功耗+高速通信)

STM32WLE5 MM8108-MF15457 组合模组设计方案(低功耗高速通信) 基于STM32WLE5(低功耗Sub-1GHz MCU)和MM8108-MF15457(WiFi HaLow射频芯片)的核心优势,打造一款兼具LoRa低功耗终端采集和WiFi HaL…

作者头像 李华
网站建设 2026/4/16 16:27:34

C++构造函数与析构函数:对象生命周期的守护者

C构造函数与析构函数:对象生命周期的守护者 引言:为什么需要特殊的初始化函数? 在C中,我们希望使用类对象就像使用基本类型一样方便。比如,我们可以这样初始化一个整数或结构体: int year 2001; struct th…

作者头像 李华
网站建设 2026/4/29 16:58:33

【完整源码+数据集+部署教程】工图机械零件特征图像分割系统源码&数据集分享 [yolov8-seg-LAWDS&yolov8-seg-RevCol等50+全套改进创新点发刊_一键训练教程_Web前端

背景意义 随着工业自动化和智能制造的迅速发展,机械零件的检测与识别在生产过程中变得愈发重要。传统的人工检测方法不仅效率低下,而且容易受到人为因素的影响,导致误判和漏判。因此,基于计算机视觉的自动化检测技术逐渐成为研究的…

作者头像 李华
网站建设 2026/4/23 23:51:34

【完整源码+数据集+部署教程】垃圾分类分割系统源码&数据集分享 [yolov8-seg-GFPN&yolov8-seg-timm等50+全套改进创新点发刊_一键训练教程_Web前端展示]

背景意义 随着城市化进程的加快和人口的不断增长,垃圾产生量急剧增加,垃圾分类和处理问题日益凸显。垃圾的无序堆放不仅占用大量土地资源,还对环境造成了严重污染,影响了人们的生活质量。因此,如何有效地进行垃圾分类&…

作者头像 李华