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

远程连接服务

 

1.SSH协议握手流程

        TCP三次握手后当前主机与远程服务器之间协商用哪种协议版本,ssh有两个(ssh1/ssh2)一般用ssh2,协商完后进入到密钥交换的阶段,客户端会生成一个公钥和一个私钥,公钥用来上锁,私钥用来解锁,要和远程服务器进行数据传输,需要对数据进行加密,将公钥(锁)发给服务器,服务器接收到当前主机发送的公钥,服务器本身也有公钥和私钥,服务器将发来的公钥与自身的公钥和私钥组成后生成一个新的东西,新的东西就叫共享密钥。这个共享密钥要一直留在服务器不能泄露给任何人,但现在服务器发来的数据主机无法解密,因为主机没有得到服务器的公钥,于是服务器需要将自己的公钥发给主机,让主机将自身的公钥私钥与服务器的公钥相结合生成一个主机的共享安全密钥,于是服务器与主机之间就可以用彼此的公钥加密,用自己的私钥解密。但在这个过程中会有公钥被黑客截取的风险,于是我们在接收服务器发来的公钥时,需要验证发来公钥的合法性,于是服务器生成了一个host公钥和host私钥,用host私钥对共享安全密钥进行处理,生成了一个HASH值的标识,在传输的过程中我们可以用服务器的host公钥对这个标识进行加密,再把服务器上的公钥传过来,主机通过自身的公钥私钥以及服务器的公钥自己也生成了一个HASH标识,此时如果两个HASH值能够配对说明我接受到的公钥是安全的

1.1.非对称加密过程(免密连接)

为了保证每次连接服务器时不需要输入密码,在客户端使用 ssh-keygen 命令生成一个公钥和私钥

交互的生成方式

ssh-keygen

Your identification has been saved in /root/.ssh/id_rsa(私钥) Your public key has been saved in /root/.ssh/id_rsa.pub(公钥)

非交互的生成方式

ssh-keygen -f /root/.ssh/id_rsa -p ""(-f 指定保存文件的名称,-P 指定密码)

现在有了公钥与私钥则需要将公钥传输过去,让它生成一个authorized_keys的文件这里面就是公钥

在客户端输入 ssh-copy-id -i id_rsa.pub(锁) root(锁那个用户)@172.25.254.100(服务器IP)

-i 指定密钥 root( 服务器的root用户)

需要得到服务器的认证,所以需要输入服务器的root密码

此时进入服务器 中的 cd /root/.ssh 中就可以看到authorized_keys文件

此时登录就不需要密码了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【java框架开发技术点】通过反射机制调用类中的私有或受保护的方法
  • 基于 STM32 的 NAS私有云盘搭建:集成LwIP 协议、HTTP/HTTPS、WEB前端技术栈(代码示例)
  • React高级特性
  • 了解关于标准化的知识
  • 【Golang 面试 - 进阶题】每日 3 题(十四)
  • 算法【N皇后问题位运算实现】
  • 基于SpringBoot+Vue的校园便利平台(带1w+文档)
  • 当 iOS 系统遇到卡顿现象,有哪些有效的解决方法?
  • 使用CLI脚手架搭建Vue2项目
  • python-鼠标绘画线条程序
  • 跟《经济学人》学英文:2024年07月27日这期 AI firms will soon exhaust most of the internet’s data
  • 【Docker】Dockerfile 文件编写
  • 基于SpringBoot+Vue的校车调度管理系统(带1w+文档)
  • CF 训练2
  • 记录使用FlinkSql进行实时工作流开发
  • 【Leetcode】101. 对称二叉树
  • github指令
  • Objective-C 中关联引用的概念
  • php ci框架整合银盛支付
  • python 学习笔记 - Queue Pipes,进程间通讯
  • RxJS: 简单入门
  • Transformer-XL: Unleashing the Potential of Attention Models
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 搭建gitbook 和 访问权限认证
  • 每天10道Java面试题,跟我走,offer有!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 微信支付JSAPI,实测!终极方案
  • 我有几个粽子,和一个故事
  • 一、python与pycharm的安装
  • 在Docker Swarm上部署Apache Storm:第1部分
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #565. 查找之大编号
  • #android不同版本废弃api,新api。
  • #职场发展#其他
  • (BFS)hdoj2377-Bus Pass
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四) Graphivz 颜色选择
  • (五)activiti-modeler 编辑器初步优化
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net Stream篇(六)
  • .net 程序发生了一个不可捕获的异常
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net 知识杂记
  • .net中调用windows performance记录性能信息
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .py文件应该怎样打开?
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化