热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SSH协议的基础知识

背景因为一些原因,把github.io重新在github搭建一下,但是hexodeploy去提交代码的时候,发生代码提交失败的情况。原来在GIS90.github.ioReposi

背景

因为一些原因,把github.io重新在github搭建一下,但是hexo deploy去提交代码的时候,发生代码提交失败的情况。原来在GIS90.github.io Repository上没有进行Deploy keys的配置,导致push失败。

配置好Deploy keys的配置,代码成功提交,但是为何配置完key就可以成功提交呢?原理是SSH协议

定义

The SSH protocol uses encryption to secure the connection between a client and a server. All user authentication, commands, output, and file transfers are encrypted to protect against attacks in the network. For details of how the SSH protocol works, see the protocol page. To understand the SSH File Transfer Protocol, see the SFTP page.

The SSH protocol (also referred to as Secure Shell) is a method for secure remote login from one computer to another. It provides several alternative options for strong authentication, and it protects the communications security and integrity with strong encryption. It is a secure alternative to the non-protected login protocols (such as telnet, rlogin) and insecure file transfer methods (such as FTP).

直接摘录了官网的原话,不多说了直接捞干的,大概意思就是说SSH协议是一种连接服务器的一种简单、安全、可靠的连接方法

验证方式

目前,后端开发、运维等工作中经常需要登录远程服务并操作,常用的连接方式都是ssh,方式如下:

ssh 用户名@IP
ssh 用户名@机器名

使用ssh登录的时候,验证方式主要有2种:

密码验证

使用用户名和密码进行登录,两者匹配才可以登录,但是密码认证有以下的缺点:

  • 密码泄漏。一个帐户多个人进行使用,需要让所有使用人都知道密码,很容易密码泄露。
  • 另外,多账户使用修改密码时必须通知所有人,否则就会造成其他人登录失败。

公钥验证

使用公钥、私钥的方式就行验证。保证了多个用户可以通过各自的密钥登录到服务器,互不干扰,而且认证也可以允许使用空密码,省去每次登录都需要输入密码的麻烦。

配置

通过sh-keygen命令进行生成公钥私钥,下面详细说明。

1、执行ssh-keygen -t rsa命令。 通过ssh-keygen --help可知,-t是加密的参数,最常用。除了rsa,还有dsa、ecdsa、ed25519,其中rsa是安全的加密方式。

2、输入要生成的文件名,默认回车即可。

3、输入密码,默认回车即可。

4、输入确认密码,,默认回车即可。

5、出现下列图案代表成功。

+--[ RSA 2048]----+
|    .+=*..       |
|  .  += +        |
|   o oo+         |
|  E . . o        |
|      ..S.       |
|      .o .       |
|       .o +      |
|       ...oo     |
|         +.      |
+-----------------+

具体的ssh-keygen参数可以通过ssh-keygen --help进行查看,这里不作详解。

原理讲解

  1. 定义

    这里主要针对于公钥私钥的验证方式进行讲解,通过执行ssh-kengen命令可以得到公钥、私钥,都是经过加密后的文件。 公钥:能被其他人知道的加密文件,id_rsa.pub。 私钥:只能自己知道的加密文件,id_rsa。

    只要私钥不被泄漏,就不会出现任何指定用户登录的问题。

  1. 流程图

  1. 验证流程

    1、Client通过ssh-keygen命令生成公钥和私钥。

    2、Client将自己的公钥id_rsa.pub存放到Server服务器上的认证文件。

    3、Client通过ssh命令将用户、IP发送请求连接指定的服务器。

    4、Server收到到请求之后,先去authorized_keys中进行查找是否有指定的用户,如果有将进行下一步,无此用户拒绝验证连接。

    5、验证文件中包含指定用户,Server将生成一个随机字符串通过*公钥进行加密,发送给Client。

    6、Client接收到Server加密的字符串,利用私钥进行解密,解密后在将这个随机字符串再发送给Server。

    7、Server接收到Client发送的解密字符串与生成的原始随机字符串进行比对,如果正确就让客户端登录,否则拒绝。

学习参考

SSH官网:https://www.ssh.com/ssh/


推荐阅读
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 本文探讨了利用JavaScript实现集合的对称差集算法的方法。该算法旨在处理多个数组作为输入参数,同时保留每个数组中元素的原始顺序。算法不会移除单个数组内的重复元素,但会删除在不同数组之间出现的重复项。通过这种方式,能够有效地计算出多个数组的对称差集。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 在 Windows 10 环境中,通过配置 Visual Studio Code (VSCode) 实现基于 Windows Subsystem for Linux (WSL) 的 C++ 开发,并启用智能代码提示功能。具体步骤包括安装 VSCode 及其相关插件,如 CCIntelliSense、TabNine 和 BracketPairColorizer,确保在 WSL 中顺利进行开发工作。此外,还详细介绍了如何在 Windows 10 中启用和配置 WSL,以实现无缝的跨平台开发体验。 ... [详细]
  • 本文整理了Java中org.jboss.netty.buffer.ChannelBuffer.readUnsignedInt()方法的一些代码示例,展示了C ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有