linux之ssh

SSH远程连接协议

SSH远程管理

定义

  • SSH(Secure Shell )是一种安全通道协议,主要用来实现字符界面的远程的登录、远程复制等功能。

  • SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。

优点

  • 安全性:数据传输是加密的,可以防止信息泄露

  • 身份验证:防止未经授权的用户访问远程系统

  • 远程管理:可通过SSH协议登录远程服务器并执行命令,无需直接物理访问设备

  • 端口转发:SSH支持端口转发功能,可以安全地传输其它协议和应用程序

  • 传输速度:数据传输是经过压缩的,可以提高传输速度

ssh服务的最佳设置

  1. 建议使用非默认端口 22

  2. 禁止使用protocol version 1

  3. 限制可登录用户 白名单

  4. 设定空闲会话超时时长

  5. 利用防火墙设置ssh访问策略

  6. 仅监听特定的IP地址 公网 内网

  7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

  8. 使用基于密钥的认证

  9. 禁止使用空密码

  10. 禁止root用户直接登录

  11. 限制ssh的访问频度和并发在线数

  12. 经常分析日志 分离

客户端与服务器所使用的软件

  • 客户端软件

    • Putty、Xshell、CRT、MobaXterm

  • 服务器软件

    • OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。

    • CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。

SSH服务开启、端口号和配置文件路径

  • 开启SSH服务

systemctl start sshd
  • SSH服务的默认端口号:22

  • SSH服务的配置文件路径

    • 服务器端:

    /etc/ssh/sshd_config                #针对服务端的配置文件
    • 客户端

    /etc/ssh/ssh_config                 #针对客户端的配置文件

SSH程序名和主程序进程

sshd                    #程序名
/usr/sbin/sshd          #服务端主进程

加密方式

  • 对称加密

  1. 概念

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

  1. 常用算法

DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等

  1. 特点

    1. 加密方和解密方使用同一个密钥

    2. 加密解密的速度比较快,适合数据比较长时的使用;

    3. 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

  2. 优点

    1. 算法公开

    2. 计算量小

    3. 加密速度快

    4. 加密效率高

  3. 缺点

    1. 在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥

    2. 其次如果一方的秘钥被泄露,那么加密信息也就不安全了

    3. 每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

  • 非对称加密

  1. 概念

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

  1. 常用算法

    1. RSA(RSA algorithm):目前使用最广泛的算法

    2. DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快

    3. ECC(Elliptic curve cryptography,椭圆曲线加密算法)

    4. ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

  2. 原理

  • 客户端向服务端发起连接请求

  • 服务端收到请求后,将会话id和服务端的公钥交给客户端

  • 客户端接收后,将会话id和客户端的公钥进行异或运算得到回复信息Res(Res=会话id^客户端公钥)

  • 客户端再将Res用服务端的公钥加密,得到密文U(U=Res+服务端的公钥id),并将密文U交给服务端

  • 服务端用服务端私钥将密文U解密,得到回复信息Res

  • 服务端将Res和会话id进行异或运算,得到客户端的公钥

OpenSSH服务端配置文件格式

sshd_config配置文件的常用选项

[root@localhost ~]# vim /etc/ssh/sshd_config
​
#Port 22                                    #端口号为22
#AddressFamily any
#ListenAddress 0.0.0.0                      #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
​
​
#LoginGraceTime 2m                          #登录验证时间为2分钟
#PermitRootLogin yes                        #允许root用户登录
#StrictModes yes                            #检查.ssh/文件的所有者,权限等
#MaxAuthTries 6                             #最大重试次数为6
#MaxSessions 10                             #同一个连接最大会话为10个
​
#PubkeyAuthentication yes                   #基于key验证
​
UseDNS yes                                  #提高速度可改为no   内网改为no  禁用反向解析
​

黑名单和白名单限制配置

Allowusers……    #仅允许某某用户登陆(白名单)
​
Denyusers ……    #禁止某些用户登录,用法于AllowUsers 类似(黑名单,注意不要同时使用)

使用SSH程序

登录方式

准备工作

#服务端准备工作
[root@Root2 ~]# systemctl disable firewalld
[root@Root2 ~]# setenforce 0
#客户端准备工作
[root@Root1 ~]# systemctl disable firewalld
[root@Root1 ~]# setenforce 0
​
# 一定要关闭防火墙和降低限制,否则ssh服务无法重启!

默认端口登录远程主机
ssh 远程主机用户名@远程主机名或IP地址 -p 端口号
-p          #指定登录端口号(当服务端的端口号为非默认22时,需要使用-P来指定自定义的端口号)
[root@localhost ~]# ssh 192.168.20.90             #输入远程主机IP地址
The authenticity of host '192.168.20.90 (192.168.20.90)' can't be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/+NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes  #确认是否连接
Warning: Permanently added '192.168.20.90' (ECDSA) to the list of known hosts.
root@192.168.20.90's password:                    #输入远程主机登录密码 
Last login: Mon Apr 29 09:21:28 2024 from 192.168.20.90
非默认端口登录远程主机

生产环境中作为安全加固设置必须配置

服务端
[root@Root2 ~]# vim /etc/ssh/sshd_config 
​
Port 224                            #ssh协议端口号更改为224
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
​
​
客户端
[root@Root1 ~]# vim /etc/ssh/sshd_config 
Port 224                            #ssh协议端口号更改为224,与服务端匹配
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
​
[root@Root1 ~]# ssh 192.168.20.90 -p 224                                                          #指定224端口号远程连接root2服务端
The authenticity of host '[192.168.20.90]:224 ([192.168.20.90]:224)' can't be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/+NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes                                          #手动确认是否连接服务端
Warning: Permanently added '[192.168.20.90]:224' (ECDSA) to the list of known hosts.
root@192.168.20.90's password:                                                                    #输入服务端登录密码
Last login: Mon Apr 29 15:56:48 2024 from 192.168.20.90
[root@Root2 ~]#                                                                                     #远程登录root2服务端成功
​
免密码远程登录主机
  • 目的:使主机与主机之间远程登录时不再需要输入登录密码,增加操作的便利度

这里只是免密码登录而不是密钥登录,依旧保证密钥传输的安全性

  • 未设置免密码登录时的状态

[root@Root1 ~]# ssh 192.168.20.90 -p 224
root@192.168.20.90's password:                    #这里依旧需要输入服务端的登录密码
​
  • 扩展

    • -t :可以选择密钥的算法

    • [root@Root1 .ssh]# ssh-keygen --help
      unknown option -- -
      usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                        [-N new_passphrase] [-C comment] [-f output_keyfile]
      #举例:
      ssh-keygen -t dsa/ecdsa/rsa/rsa1
      #如果不选择-t,就默认选择rsa算法

  • 操作步骤

    • root1为客户端

    • root2为服务端

  1. 在客户端生成密钥文件

[root@Root1 ~]# ssh-keygen                                      #免密码交互设置命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):        #第一次交互:指定密钥保存路径,可自定义,这里直接回车选择默认路径
Enter passphrase (empty for no passphrase):                     #第二次交互:提示密钥文件密码为空(未设置),询问是否设置密钥文件的密码,如果不                                                                            需要设置直接回车进入下一步
Enter same passphrase again:                                    #第三次交互:再次确认是否不设置密钥文件密码,回车确认不需要,完成生成密钥文件
Your identification has been saved in /root/.ssh/id_rsa.        #私钥文件路径
Your public key has been saved in /root/.ssh/id_rsa.pub.        #公钥文件路径
The key fingerprint is:
SHA256:GUULHPimIOZxS5apdT6hjqmE2yTm6QDOxOZ5ax5FQzc root@Root1
The key's randomart image is:
+---[RSA 2048]----+
|     . Eooo      |
|    . o oo .     |
|     = .. .      |
|. + X + oo       |
|.* O B +S        |
|O + + +          |
|+B.*   .         |
|===.+            |
|+=+o             |
+----[SHA256]-----+
​
[root@Root1 ~]# cd /root/.ssh
[root@Root1 .ssh]# ls
id_rsa                                                          #私钥文件
id_rsa.pub                                                      #公钥文件
​
  1. 将客户端的公钥远程复制到服务端

  • 复制命令

ssh-copy-id -i 公钥文件  [用户名]@IP地址 
#将密钥文件传过去
#下次就可以免密登录
#以root用户登录时 可省略
#-i为传输公钥文件的选项
  • 传输过程

[root@Root1 .ssh]# ssh-copy-id -i id_rsa.pub 192.168.20.90 -p 224
#将主机root1的公钥文件远程传输给root2服务端,这里也可以-p,因为端口被自定义为224了,如果是默认22,就不需要-p
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host '[192.168.20.90]:224 ([192.168.20.90]:224)' can't be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/+NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes              #提示是否建立连接
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.20.90's password:                                        #输入服务端登录密码
​
Number of key(s) added: 1                                               #提示信息表示传输成功
​
Now try logging into the machine, with:   "ssh -p '224' '192.168.20.90'"
and check to make sure that only the key(s) you wanted were added.
​
  • 验证

#公钥传输后的结果
[root@Root1 .ssh]# ssh 192.168.20.90 -p 224
Last login: Mon Apr 29 16:05:36 2024 from 192.168.20.91
#公钥传输前的结果
[root@Root1 ~]# ssh 192.168.20.92 -p 224
root@192.168.20.92's password:            
​
#作为对比,传输公钥后不再需要输入登录密码已经进入root2主机了,说明配置成功了

SSH远程控制服务端

命令

ssh 目标设备的IP地址 命令
#远程控制目标主机使用命令 并将命令执行结果返回本机
​
​
#主机root2的IP地址为192.168.20.92
[root@Root1 .ssh]# ssh 192.168.20.92 -p 224 ls                #查看主机B家目录下有哪些目录或文件 
anaconda-ks.cfg
core.1891
initial-setup-ks.cfg
公共
模板
视频
图片
文档
下载
音乐
桌面
[root@Root1 .ssh]#                                              #这里并没有切换到root2,说明已经通过客户端root1远程控制服务端root2
​

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

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

相关文章

docker容器技术篇:rancher管理平台部署kubernetes集群

rancher管理平台部署kubernetes集群 Rancher 是一个 Kubernetes 管理工具&#xff0c;让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群&#xff0c;创建节点并安装 Kubernetes&#xff0c;或者导入在任何地方运行的现…

CAN报文总线仲裁机制

对于标准帧而言&#xff0c;有11位的标识符&#xff0c;也就是报文的ID。报文的ID值越小&#xff0c;优先级越高。如果有两个以上的ECU同时发送CAN报文&#xff0c;ID值小的报文可以发送成功。总线仲裁机制是一种非破坏性仲裁&#xff0c;是一种既不会造成已发送数据的延迟&…

矾液回收矾树脂

五氧化二钒溶液提取矾树脂A-654的过程&#xff0c;是一个涉及五氧化二钒提纯的重要步骤。我们将详细介绍这一提取过程。 首先&#xff0c;我们需要了解五氧化二钒和净化矾树脂A-654的基本性质。五氧化二钒是一种无机化合物&#xff0c; 净化矾树脂A-654 是一款加载了复杂的多胺…

el-tabs 借助 sortablejs 实现 tab 拖拽功能

sortable.js 是一款 js 拖拽库&#xff0c;支持ie9及以上版本ie浏览器和现代浏览器&#xff0c;也可以运行在移动触摸设备中。不依赖jQuery。支持 Meteor、AngularJS、React、Vue、Knockout框架和任何CSS库&#xff0c;如Bootstrap、Element UI。你可以用来拖拽div、table等元素…

终端安全管理措施有哪些?好用终端安全管理软件推荐(建议收藏)

在当今数字化时代&#xff0c;信息安全已成为企业运营不可或缺的一部分。其中&#xff0c;终端安全为您详细介绍&#xff0c;并推荐几款好用的终端安全管理软件&#xff0c;帮助您更好地保护企业信息安全。管理是确保企业信息安全的重要环节。那么&#xff0c;终端安全管理措施…

基于 Wireshark 分析 ICMP 协议

一、ICMP 协议 ICMP&#xff08;Internet Control Message Protocol&#xff09;即互联网控制报文协议&#xff0c;是TCP/IP协议簇的一个子协议。它主要用于在IP主机、路由器之间传递控制消息&#xff0c;这些消息涉及网络是否通畅、主机是否可达、路由是否可用等关于网络本身…

Quartz怎么简单创建一个定时执行的任务

1.安装Quartz包 2.编写Job任务 继承 IJob编辑自定义任务 3.调用job&#xff0c;以指定时间策略执行 定时600s执行一次 StdSchedulerFactory factory new StdSchedulerFactory(); IScheduler scheduler await factory.GetScheduler(); await scheduler.Start();// 定义…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二&#xff08;美国东部时间&#xff09;&#xff0c;Scott Brinker设定为Martech Day&#xff0c;以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作&#xff0c;「为你们在开拓这片荒野所做的一切而欢呼&#xff01;」 同时&a…

解决硬盘灯不停的闪硬盘不停的读cpu占用率高的Microsoft Windows Search

可能你发现了&#xff0c;你的硬盘灯一直亮着&#xff0c;为什么&#xff1f;&#xff1f;可能你发现了&#xff0c;你的CPU占用率一直居高不下&#xff0c;为什么&#xff1f;也许就是因为Microsoft Windows Search这个进程 一、windowsSearch的罪证 SearchIndexer和Search…

GWO-CNN|多输入回归预测|灰狼算法优化卷积神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

vmware虚拟机内删除文件后宿主机空间不释放

问题描述 linux下&#xff0c;vmware内虚拟机删除文件&#xff0c;宿主机空间不释放&#xff0c;D盘快满了 解决方法 通过vmware-toolbox进行空间回收 安装 在虚拟机内操作 yum install -y open-vm-tools 清理 在虚拟机内操作 #查看磁盘的挂载点 sudo /usr/bin/vmware…

[C++核心编程-04]----C++类和对象之封装

目录 引言 正文 01-类和对象简介 02-封装简介 03-封装的意义 04-封装案例之设计学生类 05-封装的权限控制 06-struct和class的区别 07-成员属性设置为私有 08-封装案例1-设计立方体 09-封装案例2-判断点和圆的关系 总结 引言 在C中&#xff0c;…

力扣70 爬楼梯 C语言 动态规划 递归

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…

天诚人脸物联网锁+网约房管理系统为智慧酒店、民宿管理赋能

随着互联网技术的发展&#xff0c;“网约房”逐渐步入受众视野&#xff0c;在改变旅客入住模式和生活方式的同时&#xff0c;为旅客旅游住宿创造了新的选择&#xff0c;也为拥有冗余房间资源的房东提供了新的营收路径。但是&#xff0c;网约房的管理问题频发&#xff0c;需要数…

栈的2道面试题【有效的括号】【用栈实现队列】

栈的面试题&#xff1a; 1.有效的括号 题目&#xff1a; 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合…

CAN报文中的信号解析

ECU发送的一帧CAN报文中是有多个信号的。信号在报文的数据域中&#xff0c;数据域中可以有多个信号。协议规范一帧CAN报文数据域最多有8个字节&#xff0c;企业中一般都设计为所有的CAN报文都是8字节。8个字节&#xff08;B&#xff09;换算成比特&#xff08;bit&#xff09;就…

内网穿透使用教程

什么是内网穿透 内网穿透&#xff0c;即NAT穿透&#xff0c;网络连接时术语&#xff0c;计算机是局域网内时&#xff0c;外网与内网的计算机节点需要连接通信&#xff0c;有时就会出现不支持内网穿透。就是说映射端口&#xff0c;能让外网的电脑找到处于内网的电脑&#xff0c…

一文让您了解离散制造中的制造执行系统 ​​(MES)

什么是制造执行系统 ​​(MES)&#xff1f; 制造执行系统&#xff08;通常称为MES&#xff09;是一种综合软件解决方案&#xff0c;旨在监视、控制和管理车间的制造运营。MES 充当企业级系统&#xff08;如企业资源规划或 ERP&#xff09;与制造环境中发生的实时流程之间的桥梁…

【设计模式】之观察者模式

系列文章目录 【设计模式】之装饰器模式【设计模式】之工厂模式&#xff08;三种&#xff09;【设计模式】之工厂模式&#xff08;三种&#xff09; 前言 今天给大家介绍另一种设计模式--观察者模式&#xff0c;有了解webscoket实现原理的小伙伴应该对这个设计模式不陌生。不清…

《视觉十四讲》例程运行记录(3)——运行ch6的例程中Ceres和g2o库的安装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、安装Ceres1. 安装依赖2. 编译安装 二、安装g2o1. 安装依赖项2. 编译安装3. 可能出现的报错(1) 报错一 一、安装Ceres 1. 安装依赖 终端输入&#xff1a; sud…