Linux中ssh远程登录原理与配置

SSH连接的五个阶段

1. 版本协商阶段(Protocol Version Negotiation)
  • 目的:协商使用SSH-1或SSH-2协议(现代系统默认SSH-2)。

  • 流程

    请添加图片描述

  • 关键点:若版本不兼容(如客户端只支持SSH-1,服务端仅支持SSH-2),连接立即终止。


2. 算法协商阶段(Algorithm Negotiation)
  • 目的:协商加密算法、MAC(消息认证码)、密钥交换算法等。

  • 流程

    在这里插入图片描述

  • 算法类型

    • 密钥交换算法curve25519-sha256, ecdh-sha2-nistp256
    • 加密算法aes256-gcm@openssh.com, chacha20-poly1305
    • MAC算法hmac-sha2-256
    • 主机密钥算法ssh-ed25519, ecdsa-sha2-nistp256

3. 认证阶段(Authentication)

客户端需通过服务端验证,常见方式:密码认证公钥认证

🔐 密码认证原理

在这里插入图片描述

  • 风险:易受暴力破解攻击,建议启用失败次数限制(如MaxAuthTries 3)。
🔑 密钥认证原理

在这里插入图片描述

  • 优势:抵御中间人攻击(依赖主机密钥)、无需传输密码。
  • 关键文件
    • 客户端:~/.ssh/id_ed25519(私钥), ~/.ssh/id_ed25519.pub(公钥)
    • 服务端:~/.ssh/authorized_keys(存储已授权的公钥)

4. 会话请求阶段(Session Request)
  • 目的:建立交互式Shell、SFTP、端口转发等通道。

  • 流程

    在这里插入图片描述

  • 关键请求类型

    • shell:启动交互式终端
    • subsystem sftp:启动SFTP服务
    • tcpip-forward:请求端口转发

5. 数据交互阶段(Data Exchange)
  • 安全通道特性

    • 所有数据通过对称加密传输(如AES-256)
    • 每个数据包附加MAC校验码防篡改
    • 支持压缩(可选)
  • 数据传输流程

    在这里插入图片描述


认证方式对比总结

特性密码认证密钥认证
安全性较低(易受暴力破解)高(非对称加密+签名)
便捷性需手动输入密码免密码(可配合ssh-agent)
防中间人攻击依赖主机密钥验证依赖主机密钥验证
配置文件/etc/ssh/sshd_config~/.ssh/authorized_keys
推荐场景临时访问自动化脚本/常连接

SSH完整使用指南

一、SSH服务端部署
# 安装SSH服务
yum -y install openssh openssh-clients# 启动服务并设置开机自启
systemctl restart sshd
systemctl enable sshd# 更改用户登录选项
vim /etc/ssh/sshd_config
# 把选项更改为yes(Centos7有些为默认开启)
#PermitRootLogin yes
二、SSH连接基础
# 基本连接(仅命令行)
ssh username@server_ip# 带图形界面转发(X11 Forwarding)
ssh -X username@server_ip
三、密钥认证配置流程

在这里插入图片描述

具体命令:

# 1. 客户端生成密钥(默认RSA算法)
ssh-keygen  # 连续回车使用默认设置# 2. 上传公钥到服务器(需验证密码)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip# 3. 验证密钥登录(无需密码)
ssh username@server_ip
四、文件传输操作
操作类型命令格式示例
SFTP 交互式传输sftp user@ipsftp root@172.25.0.183
→ 上传文件put [本地文件] [远程路径]put /local/file /remote/
→ 下载文件get [远程文件] [本地路径]get /remote/file /local/
SCP 直接传输
→ 上传文件scp [本地文件] user@ip:[远程路径]scp /tmp/aa root@172.25.0.183:/var
→ 下载文件scp user@ip:[远程文件] [本地路径]scp root@172.25.0.183:/tmp/cc /var

📌 路径记忆口诀

  • 上传:本地文件 → 远程位置
  • 下载:远程文件 → 本地位置
五、SSH协议核心流程

在这里插入图片描述

六、安全增强配置
# 禁用密码认证(强制密钥登录)
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd# 使用更安全的Ed25519算法
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip
七、常见问题排查
# 查看详细连接过程(调试模式)
ssh -vvv user@ip# 检查公钥权限(服务端)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys# 验证端口监听
ss -tuln | grep :22

💡 最佳实践

  1. 生产环境禁用密码认证
  2. 使用-J参数配置跳板机访问内网主机
  3. 定期轮换密钥(建议每90天)
  4. 使用Fail2Ban防御暴力破解

附:SSH协议栈架构

应用层 (SCP/SFTP/SHELL)|
SSH连接协议 (通道管理)|
用户认证协议 (密钥/密码)|
传输层协议 (加密/压缩)|TCP/IP

使用-J参数配置跳板机访问内网主机

  1. 定期轮换密钥(建议每90天)
  2. 使用Fail2Ban防御暴力破解

附:SSH协议栈架构

应用层 (SCP/SFTP/SHELL)|
SSH连接协议 (通道管理)|
用户认证协议 (密钥/密码)|
传输层协议 (加密/压缩)|TCP/IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90982.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes --存储入门

一、Volume 的概念对于大多数的项目而言,数据文件的存储是非常常见的需求,比如存储用户上传的头像、文件以及数据库的数据。在 Kubernetes 中,由于应用的部署具有高度的可扩展性和编排能力(不像传统架构部署在固定的位置&#xff…

蚂蚁 KAG 框架开源:知识图谱 + RAG 双引擎

引言:从RAG到KAG,专业领域知识服务的技术突破 在大语言模型(LLM)应用落地过程中,检索增强生成(RAG) 技术通过引入外部知识库有效缓解了模型幻觉问题,但在专业领域仍面临三大核心挑战…

V-Ray 7.00.08 for 3ds Max 2021-2026 安装与配置教程(含语言补丁)

本文介绍 V-Ray 7.00.08 渲染器在 3ds Max 2021-2026 各版本中的安装与使用配置步骤,适合需要进行可视化渲染工作的设计师、建筑师及相关从业者。附带语言补丁配置方式,帮助用户获得更顺畅的使用体验。 📁 一、安装文件准备 软件名称&#xf…

Go-Elasticsearch Typed Client查询请求的两种写法强类型 Request 与 Raw JSON

1 为什么需要两种写法? 在 Golang 项目中访问 Elasticsearch,一般会遇到两类需求:需求场景特点最佳写法后台服务 / 业务逻辑查询固定、字段清晰,需要编译期保障Request 结构体仪表盘 / 高级搜索 / 模板 DSL查询片段由前端或脚本动…

Leaflet 综合案例-聚类图层控制

看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二 作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路! OpenLayers…

React组件中的this指向问题

在 React 组件中,函数定义方式影响this指向的核心原因是箭头函数与普通函数的作用域绑定规则不同,具体差异如下:​ 1. 普通函数(function定义)需要手动bind(this)的原因​ 当用function在组件内定义方法时&#xff1…

Vue 项目中的组件引用如何实现,依赖组件间的数据功能交互及示例演示

在 Vue 项目中,组件间的引用与数据交互是核心功能之一。以下是组件引用和数据交互的详细实现方式及示例:一、组件引用方式 1. 基本组件引用 局部注册:在父组件中按需引入子组件并注册。 // ParentComponent.vue import ChildComponent from .…

✨ 使用 Flask 实现头像文件上传与加载功能

文章目录&#x1f9f1; 技术栈&#x1f5c2;️ 项目结构与配置&#x1f510; 用户身份校验逻辑&#x1f4e4; 头像上传接口&#xff1a;/file/avatar/upload&#x1f4e5; 加载头像接口&#xff1a;/file/avatar/load/<filename>&#x1f9ea; 示例请求&#xff08;使用 …

去除视频字幕 5: 使用 ProPainter, 记录探索过程

使用 ProPainter 去除视频上的字幕&#xff0c;效果演示&#xff08;比之前好多了。&#xff09;。 1. 项目目标 去除视频 (bear.webm) 中的硬字幕。 2. 初始尝试与关键失败&#xff1a;IOPaint 方法: 使用 IOPaint&#xff08;一个图像修复工具&#xff09;配合 PaddleOCR 逐…

JavaScript HTTP 请求:从老古董到新潮流

前端开发离不开跟后端打交道&#xff0c;HTTP 请求就是这座桥梁。JavaScript 提供了好几种方式来发请求&#xff0c;从老牌的 XMLHttpRequest (XHR) 到现代的 Fetch API&#xff0c;再到各种好用的第三方库&#xff08;像 Axios、Ky、Superagent&#xff09;。咱们一个一个聊清…

Windows10系统使用Cmake4.1.0构建工具+Visual Studio2022编译Opencv4.11教程

安装提示 后续安装本Cmake和Opencv版本及以上都可以。Microsoft Visual Studio2022已默认安装&#xff0c;没有安装给出教程链接。 一、Cmake4.1.0下载 1.官网下载&#xff1a;https://cmake.org/download/&#xff0c;找到cmake-4.1.0-rc3-windows-x86_64.zip版本 2.压缩包…

【性能测试】Jmeter+Grafana+InfluxDB+Prometheus Windows安装部署教程

一、工具作用与整体架构 1.1 各工具核心作用 工具作用描述关键特性Jmeter性能测试工具&#xff0c;模拟多用户并发请求&#xff0c;生成测试数据支持HTTP/HTTPS、数据库等多种协议&#xff0c;可自定义测试场景InfluxDB时序数据库&#xff0c;专门存储时间序列数据&#xff0…

【Kubernetes】使用Deployment进行的资源调度,资源清理,伸缩与更新管控

Kubernetes Deployment 实战&#xff1a;从资源清理到伸缩与更新管控 一、基础准备&#xff1a;清理闲置 ReplicaSet 在使用 Deployment 时&#xff0c;每次更新都会生成新的 ReplicaSet&#xff08;简称 RS&#xff09;&#xff0c;旧的 RS 会被保留但设置为 DESIRED0。这些闲…

stm32使用USB虚拟串口,因电脑缺少官方驱动而识别失败(全系列32单片机可用)

驱动下载地址 官网地址&#xff1a;https://www.st.com/en/development-tools/stsw-stm32102.html

枚举中间位置基础篇

参考资料来源灵神在力扣所发的题单&#xff0c;仅供分享学习笔记和记录&#xff0c;无商业用途。 核心思路&#xff1a; 一&#xff1a;直接直接用数据结构记录需要的数据&#xff0c;在枚举右&#xff0c;维护左的循环中&#xff0c;删除当前位置的元素即可达成一样效果 二…

企业选择将服务器放在IDC机房托管的优势

在服务器作为数据存储和传输的核心设备的社会环境中&#xff0c;服务器的稳定性和安全性会直接影响到企业业务的连续性和用户的满意程度&#xff0c;随着云计算技术和大数据的兴起&#xff0c;企业对于服务器的需求也在日益增加&#xff0c;而如何高效、安全的管理服务器则是各…

自动化UI测试工具TestComplete的AI双引擎:即时数据集 + 自愈测试

随着敏捷开发和持续交付模式的普及&#xff0c;传统的软件测试方法正面临着前所未有的挑战。测试团队在追求快速迭代的同时&#xff0c;往往陷入测试数据准备和测试维护的泥潭&#xff0c;严重制约了交付效率和质量保障能力。 TestComplete作为业界领先的自动化测试工具&#…

用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)

用KNN实现手写数字识别&#xff1a;基于 OpenCV 和 scikit-learn 的实战教学在这篇文章中&#xff0c;我们将使用 KNN&#xff08;K-Nearest Neighbors&#xff09;算法对手写数字进行分类识别。我们会用 OpenCV 读取图像并预处理数据&#xff0c;用 scikit-learn 构建并训练模…

数据结构自学Day15 -- 非比较排序--计数排序

一、计数排序&#xff08;Counting Sort&#xff09;计数排序是一种非比较型的排序算法&#xff0c;它的核心思想是&#xff1a;利用“元素的值”来确定它在结果数组中的位置&#xff0c;通过“统计每个数出现的次数”来完成排序。二、如何实现计数排序&#xff08;核心步骤&am…

k8s的权限

来自博客&#xff1a;25-k8s集群中-RBAC用户角色资源权限_权限 资源 角色-CSDN博客 一.RBAC概述&#xff08;基于角色的访问控制&#xff09; 1.图解 用户&#xff1a; 1.user 2.serviceAccount 3.Group 用户角色 1.Role:局部资源角色 2.clusterRole:全局资源角色额 角色绑…