【Linux】SSH协议应用

SSH协议

    • SSH
      • 简介
      • 实现
        • OpenSSH
      • ssh中的四个文件
      • ~/.ssh文件路径
      • 实验解析


SSH

简介

SSH(secure shell)只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。

💧CSDN@划过手的泪滴t


SSH之所以能够保证安全,原因在于它采用了公钥加密

整个过程是这样的:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,

但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。

再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。

这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

实现

OpenSSH

SSH协议有诸多的实现软件,广泛使用的SSH实现软件是OpenSSH。OpenSSH是SSH协议的一种开源实现,现在已经成为Linux、Unix等操作系统的SSH协议默认实现。

ssh中的四个文件

  • id_rsa:私钥
  • id_rsa.pub:公钥
  • known_hosts:存储的是远端主机的公钥
  • authorized_keys:存储的远端主机的公钥

~/.ssh文件路径

~/.ssh是存放SSH客户端相关配置和密钥文件的目录,但是第一次使用ssh的时候这个目录一般是空的,上述的konwn_hosts只有使用了ssh之后才会自动创建,然后其他主机发送公钥至本机之后,本机会生成authorized_keys文件用于存放相关的主机和密钥信息。如果想要对客户端的配置进行修改,也可以在该目录下创建config文件。

执行ssh-keygen命令创建密钥对,

ssh-keygen -t rsa -b 4096

密钥生成后会在当前目录下多出两个文件,id_rsa和id_rsa.pub,其中id_rsa是私钥(敲黑板:这个很重要,不能外泄),id_rsa.pub这个是公钥,把公钥拷贝到需要登录的远程服务器或Linux系统上,这里可以使用ssh-copy-id自动完成,也可以手动追加秘钥到远程服务器。

方法一(推荐):

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

执行命令了会要求输入远程机器的密码,输入密码即可。

注:ssh-copy-id默认端口是22,如果您的SSH端口不是22,也就是远程服务器端口修改成其他的了,那就要得加上 -p +端口。

将上面生成的公钥id_rsa.pub追加到authorized_keys文件中:

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

密钥准备好了接下来就可以使用密钥登录了,

ssh -i ./id_rsa root@192.168.1.116

实验解析

1、使用scp将d盘中的任意文件夹拷贝到linux中的/opt/a1

scp -r D:\tmp1\ root@192.168.0.137:/opt/a1

在这里插入图片描述

在这里插入图片描述

2、使用scp命令将d盘任意文件夹中以a开头的文件拷贝到linux的/opt/b1中

 scp -r D:\qqdata\313851039\FileRecv\a* root@192.168.0.137:/opt/b1

在这里插入图片描述

3、SSH密钥对登录实验,服务端为linux,客户端一台linux一台windows

ssh-keygen -b 1024 -t rsa
#执行命令的过程中是会提示呢输入密钥的密码

在这里插入图片描述

将生成的公钥以安全的方式传输到要登录的服务器

scp ~/.ssh/id_rsa.pub root@192.168.0.137:~/

Linux服务端

mkdir .ssh
cat id_rsa.pub >> ~/.ssh/authorized_key
chmod 600 /root/.ssh/authorized_keys
vim /etc/ssh/sshd_config
systemctl restart sshdssh -i ./id_rsa.pub root@192.168.0.116

在这里插入图片描述

Windows

在这里插入图片描述

在这里插入图片描述

4、使用tcp-wrapper限制宿主机对服务端的连接

vim /etc/hosts.deny
#追加
sshd:192.168.0.106


在这里插入图片描述

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

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

相关文章

第18讲:数据在内存中的存储

⽬录 1. 整数在内存中的存储 2. ⼤⼩端字节序和字节序判断 3. 浮点数在内存中的存储 ——————————————————————————————————————————— 1. 整数在内存中的存储 在讲解操作符的时候,我们就讲过了下⾯的内容&#x…

力扣热题100_链表_21_合并两个有序链表

文章目录 题目链接解题思路解题代码 题目链接 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例…

jupyter Notebook 默认路径修改

1. anaconda prompt 中运行 jupyter notebook --generate-config 命令,将在 C:\Users\Think\.jupyter文件下生成 jupyter_notebook_config.py 文件。 2.在jupyter_notebook_config.py 文件中,找c.NotebookApp.notebook_dir 这个变量, (1)若…

Solana 线下活动回顾|多方创新实践,引领 Solana“文艺复兴”新浪潮

Solana 作为在过去一年里实现突破式飞跃的头部公链,究竟是如何与 Web3 行业共振,带来全新的技术发展与生态亮点的呢?在 3 月 24 日刚结束的「TinTin Destination Moon」活动现场,来自 Solana 生态的的专家大咖和 Web3 行业的资深人…

LeetCode - 移除石子使总数最小

1962. 移除石子使总数最小 当我看到这道题目的时候,第一时间想到的是:while循环 sort,时间复杂度 k*nlogn。题目要求执行k次操作后,剩下狮子的最小总数,我们是否可以考虑维护一个堆呢?堆顶值最大&#xff…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《台风灾害下考虑多类型故障不确定性的源网荷协同弹性提升模型》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Leetcode_2两数相加

文章目录 前言一、两数相加1.1 问题描述1.2 解法一:分别将链表转为数字,然后相加1.3 代码实现1.4 解法二:分别将对应位置数字相加1.5 代码实现 二、使用步骤1.引入库2.读入数据 前言 链表是一种物理内存非连续存储,非顺序的线性数…

AI论文速读 |【综述】 时序分析基础模型:教程与综述

论文标题:Foundation Models for Time Series Analysis: A Tutorial and Survey 作者: Yuxuan Liang(梁宇轩), Haomin Wen(温浩珉), Yuqi Nie(PatchTST一作), Yushan Jiang, Ming J…

windows安装Openssl

openssl官网:[ Downloads ] - /source/index.html Windows 安装方法 OpenSSL 官网没有提供 Windows 版本的安装包,可以选择其他开源平台提供的工具 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 等待下载完成 捐不起 配置环境变量 ope…

LC 111.二叉树的最小深度

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出:…

苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)

目录 一、缓存菜品 1 问题说明 2 实现思路 3 代码开发:修改DishServiceImpl 4 功能测试 二、SpringCache 1. 介绍 2. 使用语法 1 起步依赖 2 使用要求 3 常用注解 4 SpEL表达式(了解备用) 5 步骤小结 3.入门案例 1 准备环境 2 使用入门 1 引导类上加…

面试算法-140-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2…

LLM:检索增强生成(RAG)

1 Embedding技术 简单地说,嵌入(Embedding)思想可以视为一种尝试通过用向量来表示所有东西的“本质”的方法,其特性是“相近的事物”由相近的数表示。 1.1 文本向量(Text Embedding) 在GPT中,文本嵌入(Text Embedding)是通过将输入文本中的每…

vsphere高可用实验

实验要求: 部署高可用集群,在2个EXSI主机上,将该虚拟机断电。这台虚拟机会在另一台主机上自动起来 实验环境要求: 2台EXSI,一台ISCSI,一台vcenter,在一台EXSI上安装一台虚拟机,要求…

【chrome扩展】简 Tab (SimpTab)‘每日一句名言’样式

背景:最初参考“每日诗词”发现总是那几句,可以更换API接口完成“每日一句名言” 声明:本人不会ajax及ccs样式,非专业人士,借助CHATGPT代码生成完成。请友善交流。 每一句名言API: "https://api.xygeng.cn/open…

jdk api之WriteAbortedException基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…

WPF中通过自定义Panel实现控件拖动

背景 看到趋时软件的公众号文章(WPF自定义Panel:让拖拽变得更简单),发现可以不通过Drag的方法来实现ListBox控件的拖动,而是通过对控件的坐标相加减去实现控件的位移等判断,因此根据文章里面的代码,边理解边…

Day80:服务攻防-中间件安全HW2023-WPS分析WeblogicJettyJenkinsCVE

目录 中间件-Jetty-CVE&信息泄漏 CVE-2021-34429(信息泄露) CVE-2021-28169(信息泄露) 中间件-Jenkins-CVE&RCE执行 cve_2017_1000353 CVE-2018-1000861 cve_2019_1003000 中间件-Weblogic-CVE&反序列化&RCE 应用金山WPS-HW2023-RCE&复现&上线…

代码随想录第30天|51. N皇后

51. N皇后 51. N 皇后 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 这就是传说中的N皇后? 回溯算法安排!| LeetCode:51.N皇后_哔哩哔哩_bilibili 按照国际象棋的规则,皇后可以攻击与之处在同一行…

element-ui empty 组件源码分享

今日简单分享 empty 组件的源码实现,主要从以下三个方面: 1、empty 组件页面结构 2、empty 组件属性 3、empty 组件 slot 一、empty 组件页面结构 二、empty 组件属性 2.1 image 属性,图片地址,类型 string,无默认…