SSH服务详解

news2024/11/24 3:08:09

1 SSH服务 

1.1 SSH服务协议

SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

 SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

 在默认状态下,SSH服务主要提供两个服务功能:

  • 一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务。
  • 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的.提供更安全的SFTP服务(vsftp,proftp)

1.2 SSH加密技术

简单的说,SSH加密技术就是将人类可以看得懂的数据,通过一些特殊的程序算法,把这些数据变成杂乱的无意义的信怠,然后,通过网络进行传输,而当到了目的地后,在通过对应的解密算法,把传过来的加密的数据信怠解密成加密前的可读的正常数据。因此,当数据在互联网上传输时即使被有心的黑客监听窃取了,也很难获取到真正黑要的数据。

当前,网络上的数据包加密技术一般是通过所谓的一对公钥与私钥(PublickeyandPivatekey)组合成的密钥对进行加密与解密操作。如下图,A-Server要给B_Client传数据,首先会通过本地的公钥加密后再到发到网络上传输。而加密的数据到达B_Client端后,再经由B_Client本地的私钥将加密的数据解密出来。由于在intemet上传输过程中的数据是加密过的,所以,传输的数据内容一般来说是比较安全的。

1.2.1 私钥与公钥

ssh实现安全链接建立,是利用私钥和与公钥实现的,其实现方式为:

  • 私钥相当于钥匙,公钥相当于锁头,私钥可以解密公钥。
  • 公钥可以再网络中传输,私钥再本地主机保存。

1.2.2 ssh加密算法

  • v1漏洞: 密钥不更换
  • v2 定期更换密钥

利用Diffie-Hellman机制定期更新密钥

1.3 ssh知识要点

  • ssh是安全的加密协议,用于远程链接linux服务器

  • ssh 默认端口是22,安全协议版本sshv2,出来2之外还有1(有漏洞)

  • ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

  • linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令等。

1.4 SSH服务

1.4.1 什么是ssh服务?

SSH服务端是一个守护讲程 (daemon).他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之。

ssh客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。

ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给 SSH的客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。

1.4.2 ssh安装

客户端

[root@iso-all ~]# rpm -qf `which ssh`
openssh-clients-7.4p1-16.el7.x86_64

服务端软件

[root@iso-all ~]# rpm -qf `which sshd`
openssh-server-7.4p1-16.el7.x86_64

1.4.3 openssh-clinets组件

[root@iso-all ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config         #ssh客户端配置文件
/usr/bin/.ssh.hmac
/usr/bin/scp                  #远程复制命令
/usr/bin/sftp                 #远程文件传输服务
/usr/bin/slogin              #远程登陆命令
/usr/bin/ssh                  #ssh远程登陆管理主机
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id        #ssh服务分发公钥命令
/usr/bin/ssh-keyscan

1.4.4 openssh-server启动方式

[root@iso-all ~]#  rpm -ql openssh-server
/etc/rc.d/init.d/sshd      #ssh服务启动脚本
/etc/ssh/sshd_config       #ssh服务配置文件
/etc/sysconfig/sshd        #ssh创建密钥有关
/usr/sbin/.sshd.hmac       #ssh加密算法有关文件
/usr/sbin/sshd             #ssh服务进程启动命令

注意:使用sshd采用绝对路径进行启动

[root@iso-all ~]# sshd
sshd re-exec requires execution with an absolute path

1.5 ssh服务配置文件

  • 配置文件中所有注释信息,表示默认参数配置
  • 配置文件中#空格 后面内容表示说明信息
    • #参数 表示配置参数信息
  • 配置文件参数信息修改后,一旦变为注释,即还原为默认配置

1.5.1 ssh服务配置文件

文件路径:/etc/ssh/sshd_config
修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。
一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何配置。

1.5.2 常用配置

[root@iso-all ~]# vim /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
 
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
 
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
 
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
 
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
 
Port 10000                   #端口
ListenAddress 10.0.0.15   #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务
PermitRootLogin no         #是否允许root用户登陆
#PermitEmptyPasswords no  #禁止空密码登陆
#UseDNS no                   #不使用DNS
GSSAPIAuthentication no    #API认证
# 连接慢的解决
#AddressFamily any         #指定监听ipv4地址,或是ipv6地址,或者所有都监听

配置文件内容说明:

井号(#)注释的参数信息为默认配置
井号(#)后面有空格的为描述信息
井号(#)后面没有空格的为参数信息
另外:配置文件参数信息修改后,一旦变为注释,即还原为默认配置

1.5.3 配置文件语法检查方法

使用sshd -t 命令 对配置文件的语法进行检查
[root@iso-all ~]# sshd  -t /etc/ssh/sshd_config
Extra argument /etc/ssh/sshd_config.
语法格式有错误
[root@iso-all ~]# sshd  -t /etc/ssh/sshd_config
/etc/ssh/sshd_config: line 17: Bad configuration option: ort
/etc/ssh/sshd_config: terminating, 1 bad configuration options

1.5.4 SSH配置文件相关参数详细说明

命令参数

参数说明

Port

指定sshd进程监听的端口号,默认为22.可以使用多条指令监听多个端口.

默认将在本机的所有网络接□上监听,但是可以通过ListenAddress指走只在某个特定的接口上监听.

PermitEmptyPasswords

是否允许密码为空的用户远程登录.默认为"no"

PermitRootLogin

是否允许root登录.可用值如下:"yes"(默认)表示允许."no"表示禁止.

"without-password"表示禁止使用密码认证登录."forced-commands-only"表示只有在指走了command选项的情况下才允许使用公钥认证登录.同时其它认证方法全部被禁止.这个值常用于做远程备份之类的事情.

1.多开一个窗口

2.临时多部署一条连接方式

3.给普通用户sudo权限

UseDNS

指定定sshd是否应该对远程主机名进行反向解折,以检查此主机名是否与其IP地址真实对应.默认值为"yes”.

ListenAddress

指定监听并提供服务相应的网卡地址信息

1.5.6 快速修改配置参数 

sed -i '13 iPort 10000\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no'  /etc/ssh/sshd_config

1.6 ssh服务认证类型

  • 基于口令认证方式
  • 基于密钥认证方式

1.6.1 基于密码的认证类型

基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。

演示了 xshell及ssh客户端连接,口令验证的测试。

1.6.2 基于密钥的安全认证方法

基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥对,然后把公用密钥(锁头)(Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙)(Private key)放到SSH的客户端或对应的窖户端服务器上。

公钥可以再网路中传输---公钥不能解密私钥 

此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端服务器就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公用密钥加密"质询"(challenge)并把它发送给SSH客户端。

1.7 基于秘钥登录配置

1.7.1 环境准备

作用

主机名

ip

服务器1

iso-all

10.0.0.15

服务器2

10e0e0e17

10.0.0.17

服务器3

10e0e0e12

10.0.0.12

1.7.2 在备份服务器上创建密钥对

[root@iso-all ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:XWghzIACGsJeg9WtQ2sp37F2f1+wwwEDM/OT+uv+468 root@iso-all
The key's randomart image is:
+---[RSA 2048]----+
|=.o...o+. *      |
|o+.o.o .o. O .   |
|o ..o +   o B    |
| . . * . o o +   |
|    + o S o   o  |
|     . + . . . + |
|      . . . . + .|
|           . o...|
|           o=oE=.|
+----[SHA256]-----+
[root@iso-all ~]#

参数说明:

 -t:指定创建密钥对的类型,可以创建的类型如下

Specifies the type of key to create.  The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa” or “rsa” for protocol version 2.

查看创建出来的密钥对:

[root@iso-all ~]# ll ~/.ssh/
总用量 8
-rw------- 1 root root 1675 9月  23 23:41 id_rsa
-rw-r--r-- 1 root root  394 9月  23 23:41 id_rsa.pub

1.7.3 将公钥分发给服务器2 

[root@iso-all ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.17    #用户使用当前用户
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.17 (10.0.0.17)' can't be established.
ECDSA key fingerprint is SHA256:50iZHi5gziDbUudtJ37ijhno5lyuCWTmNnURkgi2imc.
ECDSA key fingerprint is MD5:ff:c1:42:e0:c4:00:95:e1:14:0a:e9:96:0d:bb:8d:f6.
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@10.0.0.17's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.0.0.17'"
and check to make sure that only the key(s) you wanted were added.
Formatting page, please wait...
SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)
NAME
       ssh-copy-id  -  install  your  public  key in a remote machine's autho-
       rized_keys
SYNOPSIS
       ssh-copy-id [-i [identity_file]] [user@]machine

1.7.4 进行登录测试

[root@iso-all ~]# ssh 10.0.0.17
Last login: Wed Sep 23 23:29:12 2020 from 10.0.0.1
[root@10e0e0e17 ~]# 

1.8 telnet服务

1.8.1 部署telnet服务

安装telnet服务软件
[root@iso-all ~]#  yum install telnet telnet-server -y

1.8.2 客户端测试

说明:

    telnet服务默认不支持root用户直接登陆。

[root@iso-all ~]# telnet 10.0.0.17 22
Trying 10.0.0.17...
Connected to 10.0.0.17.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

2 问题

2.1 系统负载过高,无法连接ssh

可以通过修改 进程优先级的方法来是sshd服务能够更多的使用资源,保证sshd的连接

修改进程优先级的方法:

  • 优先系数由系统内核决定,不可更改
  • nice值可以手动更改,范围是 -20~19
  • 优先级的值越低,优先级越高;优先级的值越高,优先级越低。

所以想调整成最高优先级的话,就将nice值设为-20;想调整成最低优先级的话,将nice值设为19。

2.1.1 任务未运行前进行调整

nice -n-20 sh a.sh   #以最高优先级运行a.sh这个脚本
nice -n19 sh  a.sh    #以最低优先级运行a.sh这个脚本

2.1.2 任务已经开始运行的情况下调整

1)方法一

# top                        #查看系统当前进程运行情况
> r                          #键入小r
> PID to renice:             #提示输入运行的进程的pid
> Renice PID 23302 to value: #把这个进程的nice值设置为多少,根据需要进行调整

2)方法二

renice -20 PID    #将进程的nice值改为-20
renice 19 PID     #将进程的nice值改为19

 查看进程优先级

[root@iso-all ~]# ps -lef |grep sshd 
4 S root       6818      1  0  80   0 - 28218 poll_s 9月23 ?       00:00:00 /usr/sbin/sshd -D
4 S root       7101   6818  0  80   0 - 40370 poll_s 9月23 ?       00:00:00 sshd: root@pts/0
0 R root       7303   7103  0  80   0 - 28181 -      00:29 pts/0    00:00:00 grep --color=auto sshd

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

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

相关文章

机器学习集成学习——Adaboost分离器算法

系列文章目录 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 机器学习相关概念思维导图 文章目录 系列文章目录 前言 Adaboost算法的简单介绍 Adaboost算法相…

如何将Chrome浏览器重置为默认设置?

如何将Chrome浏览器重置为默认设置? 将 Chrome 设置重置为默认设置 您可随时在 Chrome 中恢复您的浏览器设置。如果所安装的应用或扩展程序在您不知情的情况下更改了设置,那么您可能需要这样做。不过,您保存的书签和密码不会被清除或更改。 …

数据库 期末复习(4) 概念数据库的设计

参考资料 :邹老师数据库课件 程老师数据库课件 战老师数据库课件 第一部分 为啥要引入概念数据库 感觉只有一个重点 实体联系模型----ER模型 第二部分-----实体联系模型 这个例子可以全看完之后再来看 举个例子:根据COMPANY数据库的需求来构造数据库模式:The com…

工业控制系统的设备如何加密防勒索病毒

场景描述 信息化时代发展迅速,数据防泄露一词也频繁的出现在我们身边。无论企业或政府单位,无纸化办公场景越来越多,数据泄露的时间也层出不穷。例如:世界最大职业中介网站Monster遭到黑客大规模攻击,黑客窃取在网站注…

Flume的安装和使用

安装Flume 1.1访问Flume的官网(http://flume.apache.org/download.html),下载Flume安装apache-flume-1.9.0-bin.tar.gz。或者下载我的百度网盘资源。把安装文件解压缩到windows操作“D:\”目录下,然后执行如下命令测试是否安装成…

JavaEE Servlet的API详解

Servlet的API详解O(∩_∩)O~: 文章目录 JavaEE & Servlet的API详解1. HttpServlet抽象类1.1 init方法1.2 destroy方法1.3 service方法 2. HttpRequest接口2.1 在浏览器上显示请求首行2.2 在浏览器上显示请求header2.3 getParameter方法 - 最常用的API之一2.4 js…

【MAC】nvm安装和使用

傻瓜式使用教程如下,不用担心443 和 mac的文件夹权限问题 ! 1.将nvm包clone下来并克隆到nvm 文件夹中 打开终端后执行: git clone https://gitee.com/mirrors/nvm.git ~/.nvm2.激活nvm sudo source ~/.nvm/nvm.sh接着就可以通过nvm ls命令…

2023/6/1总结

学习CSS 动画: 2023-05-31 21-48-43-504 效果图: 2023-06-01 13-58-26-168 3D转换 3D移动: transform:translateX() 在x轴移动 transform:translateY() 在y轴移动 transform:translateZ() 在z轴移动 transform:translate3d(x,y,z); …

程序设计综合实习(C语言):链表的创建

一、目的 1.掌握单向链表的概念 2.掌握单向链表的创建、查找、删除方法 二、实习环境 Visual Stdio 2022 三、实习内容、步骤与要求 1.创建一个单向链表,存放10个学生的学号,姓名,并输出这种10个学生的信…

分布式锁框架-Redisson

分布式锁框架-Redisson 一、Redisson介绍二、在SpringBoot中使用Redisson三、Redisson工作原理四、Redisson使用扩展4.1、Redisson单机连接4.2、Redisson集群连接4.3、Redisson主从连接 五、分布式锁总结5.1、分布式锁特点5.2、锁的分类5.3、Redission的使用 基于Redis看门狗机…

chatgpt赋能python:Python以图搜图:如何用Python优化SEO?

Python以图搜图:如何用Python优化SEO? 随着搜索引擎算法的普及,优化您的SEO策略需要更多的创意和技巧。一种方法是使用Python以图搜图,具有该技能可以使您的网站上升到搜索结果列表的顶部。在这篇文章中,我们将探讨Py…

在外部编译器中使用pyqgis

pyqgis_dragonzoebai的博客-CSDN博客 升级后整理 例如在vscode当中添加qgis提供的python解释器,那么就可以使用qgis.core等库 批量处理gdb文件夹,导出对应文件夹目录的geojson文件。 我的gdb文件均没有坐标系,因此需要自己设置正确的坐标系…

chatgpt赋能python:Python网页的SEO优化指南

Python 网页的 SEO 优化指南 在如今互联网高度竞争的时代,一个网站的优化已经成为了至关重要的一环,特别是 SEO 优化。而对于使用 Python 开发网站的人来说,如何进行 SEO 优化,也是需要着重考虑的问题。本文将介绍一些 Python 网…

BGP选路规则实验

1、BGP选路规则实验-基础配置 1)拓扑 2)基础配置 第一步:基础配置: R1的配置: sysname R1 # interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip addres…

DeiT详解:知识蒸馏的Transformer

DeiT详解:知识蒸馏的Transformer 0. 引言1. ViT2. DeiT2.1 知识蒸馏2.1.1 提出背景2.1.2 理论原理 2.2 DeiT模型 3. 总结 0. 引言 针对 ViT 需求数据量大、运算速度慢的问题,Facebook 与索邦大学 Matthieu Cord 教授合作发表 Training data-efficient i…

工控机设备安全-系统加固分析

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨 倾斜摄影是一种先进的数字摄影技术,可以生成高分辨率、高精度的三维模型数据。然而,在倾斜摄影中,由于相机的倾斜角度和地形的高程差异,可能会出现高程偏差问题。为了…

Java性能权威指南-总结4

Java性能权威指南-总结4 Java性能调优工具箱操作系统的工具和分析CPU运行队列磁盘使用率网络使用率 Java监控工具基本的VM信息 Java性能调优工具箱 操作系统的工具和分析 CPU运行队列 快速小结 检查应用性能时,首先应该审查CPU时间。优化代码的目的是提升而不是…

树莓派初体验:开机啦

感谢大佬的赞助,这玩意是真的贵哇,呜呜呜呜呜呜,根本买不起 一、烧录系统 需要:SD卡(推荐16G)、读卡器(推荐高速读卡器) 进入官网:https://www.raspberrypi.com/softwa…

《MYSQL必知必会》读书笔记2

哈夫曼树的学习: http://t.csdn.cn/XJhUI 创建计算字段 字段:基本上与列的意思相同(数据库列一般称为列,而字段通常用于计算字段连接上) 拼接字段 拼接:将值联结到一起构成单个值 把两个结拼接起来&a…