news 2026/4/25 10:19:42

【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/4/24 8:18:42

AI辅助个人项目的质量保障:开发者自测试的智能化实践

引言:自测试的范式革新 在敏捷开发与持续交付(CI/CD)成为主流的当下,个人开发者常面临测试覆盖不足、回归效率低、环境适配复杂等痛点。传统手工测试在个人项目中易沦为“形式主义”,而AI驱动的自动化测试正从企业级方…

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

教育领域AI测试:在线编程作业的自动评分

一、技术架构与核心模块的测试挑战 在线编程作业自动评分系统通常采用“沙箱隔离-静态分析-动态测试-结果比对”四层架构。沙箱隔离层需通过Docker容器或安全虚拟机实现代码执行环境隔离,测试需覆盖资源限制(CPU/内存)、恶意代码拦截&#x…

作者头像 李华
网站建设 2026/4/19 2:06:23

【完整源码+数据集+部署教程】条形码图像分割系统源码&数据集分享 [yolov8-seg-SPDConv&yolov8-seg-swintransformer等50+全套改进创新点发刊_一键训练教程

背景意义 随着信息技术的迅猛发展,条形码作为一种重要的商品识别和信息管理工具,广泛应用于零售、物流、制造等多个领域。条形码不仅提高了商品管理的效率,还为企业的供应链管理提供了重要支持。然而,传统的条形码识别方法在复杂环…

作者头像 李华
网站建设 2026/4/23 18:49:02

基于Java的微型水电站监管智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 微型水电站监管智慧管理系统是一个集成了多项功能模块的综合性平台,旨在为普通员工和部门领导提供便捷的数据管理和决策支持工具。系统的主要优势在于其创新性和实用性:首先,它涵盖了从电站管理到设备维…

作者头像 李华
网站建设 2026/4/19 15:56:30

Ultralytics YOLO26 官方使用指南:从安装到部署的完整实践 附下载链接

Ultralytics 基于多年来在计算机视觉和人工智能领域的基础研究,打造了前沿的、最先进的(SOTA)YOLO模型。我们的模型不断更新,以提升性能和灵活性,具有速度快、精度高和易于使用的特点。 它们在目标检测、跟踪、实例分割…

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

MySQL 9.5 性能优化终极指南:从 10s 到 10ms 的 5 个核心心法

你好,我是《Redis 高手心法》畅销书作者码哥,可以叫我靓仔。今天,码哥带你深入 MySQL 的内心世界,扒一扒这个每天被你“增删改查”的老伙计,到底怎么才能跑得比香港记者还快!咱都是实干派,不整那…

作者头像 李华