SSH原理与应用与探索

Secure Shell(SSH 安全外壳协议) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。

SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。

优点:

  • 安全
  • 方便!两台机器间不用输入账号密码就可验证身份!(通过保存在服务器和客户端上的密钥);

ssh可以传输文本与二进制文件;

主要应用:

  • 远程登录(可免密码)、github仓库操作
  • 文件传输(如hdfs)

SSH的安全机制

SSH之所以能够保证安全,原因在于它采用了==非对称加密技术(RSA)==加密了所有传输的数据。

传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

  • 第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

传统的账号密码验证?

  • 第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下(该服务器上你用的账号)寻找你(客户端)的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

ssh

使用

  • 有没有命令行传文件的例子?传id的是个专门的命令

通常使用的软件工具为OpenSSH,在windows>system下可以看到OpenSSH的众多命令

基于密钥的安全验证-事前准备

常用于免密登录。如果想通过输入密码的方式登录则不需要这步准备。

在本机生成一对密钥(即私钥与公钥):

ssh-keygen -t rsa   #-t表示类型选项,这里采用rsa加密算法 
# -C 添加注释,如github账号

然后根据提示一步步的按enter键即可(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,这里看心情吧,如果不放心私钥的安全可以设置一下),执行结束以后会在当前用户目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。(还有个known_hosts,用于记录曾经连接过的主机域名、ip、?钥)
将公钥复制到远程主机中

使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_keys文件中

ssh-copy-id 用户名@ip

这样以后登录这台远程主机就不用账号密码了

注: windows环境下没有ssh-copy-id命令,如果碰到这种情况我们有两种处理方式,一种是在windows环境下打开git bash控制台(如果已经安装了),然后就可以在里面使用linux命令了;

另一种方法就是使用scp等方式,或者手动复制粘贴,总之把自己的公钥添加到远程主机上

关键步骤:将windows用户文件夹\.ssh\***.pub 文件复制到远程主机(linux为例)的~/.ssh/文件夹下,修改目录权限为7000,并将文件名修改为authorized_keys,修改文件权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效

有些用户远程主机的用户名和当前电脑的用户名不一样,但不影响。虽然上传的公钥是当前用户的,但上传时指定了用户名,免密登录后操作的用户是上传密钥时指定的用户

服务端准备(一般不用管,默认就行)

centos7和windows默认带有SSH工具;可以用一下命令检查:

rpm -qa | grep ssh

首先确认服务器上的ssh-server是否已经启动了

ps -e | grep ssh

SSH默认使用22端口,注意开放端口。

每次使用SSH登录一台新的主机,就会将它添加到本机已知主机列表(known_hosts)。

远程登陆
ssh 用户名@ip [-p 端口号]

口令(密码)级别使用时会提示输入密码;

若不填写用户名,则会默认以当前计算机登录的用户名尝试登录服务器

**退出:**输入logout(linux命令?) 或者exit,或直接关闭终端/进程

1、从服务器上下载文件

scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器

scp /path/filename username@servername:/path   

拓展:

github、码云上的SSH

在网页端操作,为github/gitee账户生成SSH key公钥,这样github/gitee就通过公钥知道是哪个用户在github/gitee上操作;

除了账户SSH key外,仓库也有key,但只供拉取权限;

毕竟仓库拉可以随便拉,推需要验证身份;

这也是SSH相对于https的优越之处:每次fetch和push时不再需要麻烦地输入账号密码(远程登陆也不需要账号密码了;https可以通过在git配置账号密码的方式来免除每次都要输入账号密码的麻烦);

但似乎仓库的贡献者名单还是本地设置的用户,,不知道打卡记录有没有记录

生成ssh key时的random image

The key's randomart image is:
+--[ RSA 2048]----+
|       o=.       |
|    o  o++E      |
|   + . Ooo.      |
|    + O B..      |
|     = *S.       |
|      o          |
|                 |
|                 |
|                 |
+-----------------+

[ssh keygen 中生成的 randomart image 是什么 - 掘金(https://juejin.cn/post/6844903522060730381)

单纯用于方便比较

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java预科知识

以下内容是根据狂神的Java说、chatgpt和csdn相关博客,结合自己的理解完成的。 Java了解 基于Java 开发了巨多的平台,系统,工具 构建工具: Ant, Maven, Jekins应用服务器:Tomcat, Jetty, Jboss, Websphere, weblogic…

vue的data

类型:Object | Function 限制:组件的定义只接受 function。 详细: Vue 实例的数据对象。Vue 会递归地把 data 的 property 转换为 getter/setter,从而让 data 的 property 能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个…

vertica主键列能插入重复值的处理办法

问题描述 开发同事反馈在vertica中创建含主键列的表中插入重复数据时没有进行校验,插入重复值成功。经过测试着实可以插入重复值,这个坑有些不一样。 创建表和插入语句如下: --创建表 CREATE TABLE dhhtest(ID VARCHAR(64) PRIMARY KEY );…

快速认识什么是:Docker

Docker,一种可以将软件打包到容器中并在任何环境中可靠运行的工具。但什么是容器以及为什么需要容器呢?今天就来一起学快速入门一下Docker吧!希望本文对您有所帮助。 假设您使用 Cobol 构建了一个在某种奇怪风格的 Linux 上运行的应用程序。您…

linux 定时任务

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式说明如下: * 逗号(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中横线(‘-’) 指定范围值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星号 (‘*’) 代表所有可能的值 */15 表示每 15 分钟执行一次 # Use the ha…

Python中type、object和class的关系,一图即懂

没有文字描述,因为图足够好! 查看一个类的基类可以使用__bases__方法查看一个实例对应的类是谁,可以用__class__方法 class Animal:pass class User:pass class Dog(Animal, User):passif __name__ "__main__":print(Dog.__bases…

linux初级学习

(420条消息) 红帽认证-RHCSA_rhcsa红帽认证_yyyzf的博客-CSDN博客 OS:用户和机器的接口,UI:CMD,GUI shell: 通用格式 命令 选项(调控功能) 参数(操作对象)参数 省略参数对象一般使用当前目录作为参数对…

Linux下C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库&#xff08;.a文件&#xff09;。 二.生成静态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&g…

C#-快速剖析文件和流,并使用

目录 一、概述 二、文件系统 1、检查驱动器信息 2、Path 3、文件和文件夹 三、流 1、FileStream 2、StreamWriter与StreamReader 3、BinaryWriter与BinaryReader 一、概述 文件&#xff0c;具有永久存储及特定顺序的字节组成的一个有序、具有名称的集合&#xff1b; …

题目:挑选子串(蓝桥OJ 1621)

题目描述&#xff1a; 解题思路&#xff1a; 采用双指针的快慢指针。与蓝桥OJ1372类似。 图解 题解&#xff1a; #include <bits/stdc.h> using namespace std;const int N 1e5 9; int a[N];int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m…

网站内容审核功能的重要性

网站内容审核功能的重要性在保护用户权益、维护网站形象、遵守法律法规等方面都起到了至关重要的作用。 维护网站的合法性和道德性&#xff1a;网站内容审核功能的存在可以帮助过滤和删除违法、淫秽、恶意、诈骗等不良内容&#xff0c;保证网站内容的合法性和道德性。 保护用…

实现跨VLAN通信、以及RIP路由协议的配置

一、如下图片&#xff1a; 1. 按照拓扑图所示&#xff0c;将8台计算机分别配置到相应的VLAN中。&#xff08;20分&#xff09; 2. 配置实现同一VLAN中的计算机可以通信。&#xff08;22分&#xff09; 3. 配置实现PC1,PC2,PC3,PC4可以互相通信&#xff0c;PC5,PC6,PC7,PC8可以互…

面向对象中的单例模式

1、什么是设计模式 设计模式就是前人根据实际的问题提出的问题解决方案&#xff0c;我们把这种就称之为设计模式。 2、单例模式 单例模式是一种常见的设计模式&#xff01; 所谓的设计模式&#xff0c;不是一种新的语法&#xff0c;而是人们在实际的应用中&#xff0c;面对…

计算机考研408-计算机网络、操作系统整书知识点脑图

计算机网络、操作系统整书知识点脑图 今天突然想起来考研期间为了方便记忆&#xff0c;费了很大力气整理了计算机网络、操作系统两本书知识点的脑图&#xff0c;想着放着也没啥用&#xff0c;分享出来给大家看看 但是思维导图格式的东西好像没法直接发成文章&#xff0c;要是…

(三潮来袭)探寻2023年科技变革潮流与2024年前瞻展望

2023年对于IT行业来说是一个动荡而又充满变革的一年。随着世界逐渐走出前几年的挑战&#xff0c;企业逐渐复苏&#xff0c;但这个行业仍然在经历着激烈的变革。在这个时候&#xff0c;我们看到了一些引人注目的技术变化和未来的趋势。 一、2023年回顾 关键词&#xff1a;Chat…

手持式安卓主板_PDA安卓板_智能手持终端方案

手持式安卓主板方案是一种智能终端设备&#xff0c;具备自动对焦和闪光灯功能&#xff0c;可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能&#xff0c;为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板&#xff0c;并搭载了八…

Unity中后处理简介

文章目录 前言一、后处理的原理二、我们看一下Unity文档中&#xff0c;内置的后处理前后的效果后处理前&#xff1a;后处理后&#xff1a; 前言 我们在这篇文章中&#xff0c;了解一下Unity中的后处理效果 后期处理概述 一、后处理的原理 在后处理的过程中&#xff0c;我们主…

爱智EdgerOS之深入解析安全可靠的开放协议SDDC

一、协议简介 在 EdgerOS 的智慧生态场景中&#xff0c;许多智能设备或传感器的生命周期都与 SDDC 协议息息相关&#xff0c;这些设备可能是使用 libsddc 智能配网技术开发的&#xff0c;也有可能是因为主要功能上是使用其他技术如 MQTT、LoRa 等但是设备的上下线依然是使用上…

金蝶云星空表单服务规则设置-基础资料和复选框判断

文章目录 金蝶云星空表单服务规则设置-基础资料和复选框判断语法规则业务需求开发实现测试 金蝶云星空表单服务规则设置-基础资料和复选框判断 语法规则 基础资料判断&#xff1a;标识null 复选框判断打钩&#xff1a;标识true 业务需求 售后单审核时&#xff0c;如果物料启…

【接口技术】实验5:模/数(ADC0809)和数/模(DAC0832)转换

实验5 模/数(ADC0809)和数/模(DAC0832)转换实验 一、实验目的 1&#xff1a;了解模/数转换的基本原理&#xff0c;掌握ADC0809的使用方法。 2&#xff1a;了解数/模转换的基本原理&#xff0c;掌握DAC0832的使用方法。 二、实验内容 &#xff08;1&#xff09;模/数转换器…