当前位置: 首页 > news >正文

Linux SSH 密钥认证登录原理与配置指南

文章目录

  • 前言
  • 一、SSH 密钥登录原理简介
    • 1.1 协商交互过程
  • 二、Linux 环境下配置 SSH 密钥登录
    • 2.1 生成密钥对
    • 2.2 分发公钥至目标服务器
    • 2.3 测试登录
  • 三、Windows环境使用 MobaXterm 配置密钥登录
    • 3.1 生成密钥对
    • 3.2 保存密钥文件
    • 3.3 配置会话使用密钥
  • 总结


前言

想象一下:每天要反复输入一长串密码登录服务器,就像每次回家都要掏钥匙开门——偶尔忘带钥匙还要折腾半天。那有没有更优雅的方式?有的,兄弟!有的!

SSH密钥登录就像给你的数字身份配了一把「指纹锁」:预先埋下信任的种子,之后每次连接只需「嘀」一声——无需密码、瞬间准入。这不仅省时省力,更是自动化运维、脚本执行、甚至未来云原生世界的入门基石。

今天,我们就用一杯咖啡的时间,解锁这项既安全又高效的核心技能——让你的终端操作流畅如丝,告别重复输入密码的机械时代。


一、SSH 密钥登录原理简介

1.1 协商交互过程

SSH 密钥登录基于非对称加密技术,其核心流程如下:

  1. 客户端向目标服务器发起登录请求。
  2. 服务器检查用户目录中是否存在已授权的公钥。
  3. 服务器生成一串随机数,并使用该公钥加密。
  4. 服务器将加密后的密文发送给客户端。
  5. 客户端使用本地私钥尝试解密。
  6. 若解密成功,客户端将原文发回服务器;若失败,则尝试其他认证方式(如密码)。
  7. 服务器比对原文,一致则认证成功,允许登录。

该过程既保证了身份验证的安全性,又实现了无密码自动登录。


二、Linux 环境下配置 SSH 密钥登录

2.1 生成密钥对

使用 ssh-keygen 命令生成 RSA 密钥对:

ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
参数说明
-t rsa指定密钥类型为 RSA
-P ''设置空密码,方便自动化,但降低安全性
-f /root/.ssh/id_rsa指定私钥保存路径,公钥会自动保存为同名文件加 .pub 后缀

在这里插入图片描述

2.2 分发公钥至目标服务器

使用 ssh-copy-id 命令将公钥复制到目标服务器:

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.23

过程中需输入目标服务器的密码,完成后公钥将被写入 ~/.ssh/authorized_keys 文件。

在这里插入图片描述

2.3 测试登录

使用以下命令测试无密码登录:

ssh root@192.168.10.121

若配置成功,将直接登录到目标服务器,无需输入密码。
在这里插入图片描述


三、Windows环境使用 MobaXterm 配置密钥登录

3.1 生成密钥对

  1. 打开 MobaXterm,选择【Tools】→【MobaKeyGen】。
  2. 点击【Generate】,移动鼠标增加随机性。
  3. 生成完成后设置注释,密码可留空。

在这里插入图片描述

3.2 保存密钥文件

  1. 复制公钥内容,保存为 .pub 文件(如 mk.pub)。
  2. 点击【Save private key】保存私钥为 .ppk 文件(如 mk.ppk)。

在这里插入图片描述
在这里插入图片描述

3.3 配置会话使用密钥

  1. 在Linux的/root/.ssh.authorized_keys文件中追加公钥
  2. 在会话设置中选择【Advanced SSH settings】→【Use private key】。
  3. 选择刚才保存的 .ppk 文件。
  4. 连接时即可自动使用密钥认证。

在这里插入图片描述

在这里插入图片描述


总结

从手动输密码到一键密钥登录,你已经迈出了 “自动化运维” 的关键一步!这不仅是减少几次键盘敲击那么简单 —— 它背后是对非对称加密技术的实际应用,是让工作流更高效的智慧,更是给服务器加上了一层 “专属防伪” 的安全锁。

记住,技术的意义在于让复杂变简单。当你熟练掌握密钥登录,你会发现:原来远程管理可以如此流畅,原来 “安全” 和 “便捷” 真的能兼得。接下来,试着给更多设备配置密钥,探索批量管理的技巧吧 —— 每一次简化操作,都是在为更重要的工作节省精力。技术的进阶,就藏在这些 “让重复劳动消失” 的小细节里,继续往前冲!

http://www.dtcms.com/a/352033.html

相关文章:

  • linux下的网络编程:TCP(传输控制协议)编程
  • 数据结构(C语言篇):(一)算法复杂度
  • 复盘一个诡异的Bug之FileNotFoundException
  • 数据结构的线性表 之 链表
  • 二、JVM 入门——(三)栈
  • 动手学深度学习(pytorch版):第七章节—现代卷积神经网络(2)使用块的网络(VGG)
  • MyBatis 流式查询详解
  • 使用 mcp-use 构建极简 Web 自动化测试智能体「喂饭教程」
  • 前端漏洞(上)- CORS漏洞
  • 静态HTML网页模板设计与实现
  • python基础-面向对象编程(OOP)
  • 我们来学mysql -- safe启动
  • Mysql——日志
  • 【45页PPT】制造行业数据资产运营平台需求方案(附下载方式)
  • 【科研绘图系列】R语言在海洋生态学中的应用:浮游植物糖类组成与溶解性有机碳的关系
  • OpenCV打开视频函数VideoCapture使用详解
  • Linux桌面主题的安装
  • 33.ansible 比较重要的配置文件
  • 运算符(2)
  • 审核问题——鸿蒙审核返回安装失败,可以尝试云调试
  • timedatectl查看时间同步
  • Windows本地部署大模型方式对比
  • 约束满足问题(CSP)--搜索算法在实际场景中的应用
  • 深度学习篇---LeNet-5
  • 国产银河麒麟SP1桌面系统如何免密登录系统
  • Rust:函数与控制流
  • MATLAB在生态环境数据处理与分析中的应用
  • 基于MATLAB的雷达系统设计中的信号处理程序
  • Java:Docx4j类库简介及使用
  • 在 Vue 中嵌入 Unity WebGL 并实现双向通信