【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

目录

一、SSH基础

1、什么是ssh服务器

2、对比一下ssh协议与telnet协议

3、常见的底层为ssh协议的软件:

4、拓展

二、SSH软件学习

1、ssh服务软件学习 

2、sshd公钥传输的原理:

3、ssh命令学习:

4、学习解读sshd服务配置文件:

三、ssh服务的应用

1、使用密钥对免密码登录

第一步:在客户端自己生成一对密钥(使用命令ssh-keygen)

第二步:将公钥文件导入给服务器,检查自己会产生一个known_hosts文件,服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。

第三步:验证是否免密:(这个是单向的,如果需要服务器也能连接客户端,那么还需要在服务器同样做设置)

 2、黑白名单设置

黑白名单的语法:

第一种:白名单

第二种: 黑名单


一、SSH基础

1、什么是ssh服务器

ssh是一种安全双通道协议,主要用来实现远程登录、数据传输等;ssh协议对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令,ssh为建立在应用层和传输层基础上的安全协议。

2、对比一下ssh协议与telnet协议

telnet协议:是明文的,端口号是tcp的23端口;

ssh协议:数据传输是加密的,可以防止信息泄露;数据传输是压缩的,可以提高传输的速度;端口是tcp的22端口;

SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

3、常见的底层为ssh协议的软件:

Linux客户端: ssh, scp, sftp,slogin

Windows客户端:xshell, MobaXterm,putty, securecrt

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

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

执行"systemctl start sshd"命令即可启动sshd 服务

4、拓展

Windows上自带的远程连接工具是mstsc,是使用的tcp的3389端口,使用的RDP协议

 

二、SSH软件学习

1、ssh服务软件学习 

软件名:openssh(在centos7中为openssh-server)
服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config ##ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
客户端配置文件:/etc/ssh/ssh_config

2、sshd公钥传输的原理:

  • 客户端发起连接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID(异或是算法,有很多种),计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

原理是这样,但是在实际操作中客户端把服务器的公钥记录在了~/.ssh/known_hosts文件中

拓展:

思考我们登录时怎么确认是不是我需要连接的服务器?(有个前提是我能碰的着服务器)

首先在客户端连接服务器:

服务器连接自己试试:

3、ssh命令学习:

ssh命令的语法:ssh [选项] 用户名@服务器ip地址或域名
选项:
-p 端口号:不加默认是22号端口,如果是端口被修改了,需要指定端口号;
-l 用户名:这个和“用户名@”效果一样;
-t 跳板机服务器ip地址:比如需要访问外网的时候,需要先过内外网服务器等等;
-o 配置文件参数变量值:比如ssh 192.168.20.10 -o StrictHostKeyChecking=no (允许免密登录)

ssh 还能直接跟上命令
如:
ssh 192.168.91.101 hostname (显示远程服务器的主机名)

4、学习解读sshd服务配置文件:

[root@localhost /]#vim /etc/ssh/sshd_config 
 17 #Port 22  
 ##这是sshd服务监听的端口,为了安全起见,建议更改默认端口为一个五位数以上的端口号
 18 #AddressFamily any
 19 #ListenAddress 0.0.0.0 ##可以改为自己的自己的ip地址
 20 #ListenAddress ::##用来设置sshd服务器绑定的IP地址
 
 32 SyslogFacility AUTHPRIV  
 33 #LogLevel INFO
 ##当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV,sshd 服务日志存放在:/var/log/secure。
 ##可以做日志分离优化
 ##LogLevel用来设定sshd日志消息的级别,与上面记录的等级息息相关
 
 35 # Authentication:
 ##限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒
 
 37 #LoginGraceTime 2m
 ##LoginGraceTime用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为妙
 
 38 #PermitRootLogin yes
 ##PermitRootLogin用来设置能不能以root身份ssh登录,

 40 #MaxAuthTries 6
 ##用来设置最大失败尝试登陆次数为6
 
 41 #MaxSessions 10
 ##设置同一个连接最大会话
 
 43 #PubkeyAuthentication yes
 ##基于key验证(生产中需要打开)

 63 #PasswordAuthentication yes
 64 #PermitEmptyPasswords no  ##是否允许空密码登录,no表示不允许,需要密码!!
 ##密码验证建议还是需要的!可以通过认证的秘钥来登陆,来减少密码交互。
 65 PasswordAuthentication yes
 ##基于用户名和密码连接,默认为yes

 96 UsePAM yes
 ##设置是否通过PAM验证,需要的
 98 #AllowAgentForwarding yes  ##允许代理
 99 #AllowTcpForwarding yes  ##允许tcp那个代理
100 #GatewayPorts no  
##设置是否允许远程客户端使用本地主机的端口转发功能,出于安全考虑,建议禁止

115 #UseDNS no
##UseDNS是否使用dns反向解析,建议关闭,内网改为no可以提高速度

这是可以添加的选项:
#AllowUsers<用户名1> <用户名2> <用户名3> ...
##指定允许通过远程访问的用户,多个用户以空格隔开
比如:AllowUsers zhangsan@192.168.91.101  lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户

#AllowGroups<组名1> <组名2> <组名3> ...
##指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。

#DenyUsers<用户名1> <用户名2> <用户名3> ...
##指定禁止通过远程访问的用户,多个用户以空格隔开
举例:DenyUsers  liwu
#拒绝liwu被访问

#DenyGroups<组名1> <组名2> <组名3> ...
##指定禁止通过远程访问的组,多个组以空格隔开。

三、ssh服务的应用

1、使用密钥对免密码登录

第一步:在客户端自己生成一对密钥(使用命令ssh-keygen)

##使用命令生成一对密钥
[root@localhost .ssh]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##默认放在用户的家目录下的~/.ssh/下
Enter passphrase (empty for no passphrase): ##对密钥文件加密,密码至少5个字符
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:VqCGTmM6KO1NlBm1NNuCUZYE7ZXsCrZedcKdDaS4kFQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|    =BEo.o.      |
|   . @oB+o.      |
|    %.B+o..+     |
| o *o+.o=.+ .    |
|o +.oo.oSo       |
|.. +. o.         |
|  ....           |
|    .            |
|                 |
+----[SHA256]-----+
##验证密钥对成功创建
[root@localhost .ssh]#ls
id_rsa  id_rsa.pub

第二步:将公钥文件导入给服务器,检查自己会产生一个known_hosts文件,服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。

第三步:验证是否免密:(这个是单向的,如果需要服务器也能连接客户端,那么还需要在服务器同样做设置)

 2、黑白名单设置

黑白名单的语法:

#AllowUsers<用户名1> <用户名2> <用户名3> ...
##指定允许通过远程访问的用户,多个用户以空格隔开
比如:AllowUsers zhangsan@192.168.91.101  lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户

#AllowGroups<组名1> <组名2> <组名3> ...
##指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。

#DenyUsers<用户名1> <用户名2> <用户名3> ...
##指定禁止通过远程访问的用户,多个用户以空格隔开
举例:DenyUsers  liwu
#拒绝liwu被访问

#DenyGroups<组名1> <组名2> <组名3> ...
##指定禁止通过远程访问的组,多个组以空格隔开。

第一种:白名单

[root@localhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers zhangsan@192.168.20.10
##表示只允许192.168.20.10主机上的任意用户能够连接zhangsan
##并且默认拒绝所有

第二种: 黑名单

##服务器上添加黑名单
[root@localhost .ssh]#vim /etc/ssh/sshd_config 

  2 DenyUsers xueyin@192.168.20.10

拓展:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!报错

翻译为:提醒你远程主机的身份已经修改了;

系统之前连接过192.168.20.10,记录了它的公钥,现在换了一台主机ip也是这个,但是公钥与缓存不一致,所以ssh好心提醒一下;

解决思路:根据生产环境需求,如果是安全的,那么删掉本地的密钥缓存(删除~/.ssh/known_hosts文件中的对应192.168.20.10的公钥)。

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

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

相关文章

自定义Matplotlib中的颜色映射(cmap)

要自定义Matplotlib中的颜色映射&#xff08;cmap&#xff09;&#xff0c;您可以按照以下步骤进行操作&#xff1a; 导入所需的库&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap创建自定义颜色映…

一篇博客读懂栈——Stack

目录 一、栈的概念与结构 1.1栈的概念 1.2栈的结构 二、栈的实现 2.1开始前准备stack.h 2.2栈的初始化STInit 2.3栈的销毁STDestroy 2.4栈顶插入STPush 2.5栈顶删除STPop 2.6取栈顶元素STTop 2.7检查栈是否为空STEmpty 2.8栈的元素个数STSize 一、栈的概念与结…

房产中介租房小程序系统开发搭建:详细指南教你如何构建

随着微信小程序的日益普及&#xff0c;越来越多的企业和个人开始尝试开发自己的小程序。以下是制作一个房地产微信小程序的详细教程&#xff0c;希望对大家有所帮助。 一、注册登录乔拓云平台&#xff0c;进入后台 首先&#xff0c;需要注册并登录乔拓云平台&#xff0c;该平台…

JavaEE初阶(18)(JVM简介:发展史,运行流程、类加载:类加载的基本流程,双亲委派模型、垃圾回收相关:死亡对象的判断算法,垃圾回收算法,垃圾收集器)

接上次博客&#xff1a;初阶JavaEE&#xff08;17&#xff09;Linux 基本使用和 web 程序部署-CSDN博客 目录 JVM 简介 JVM 发展史 JVM 运行流程 JVM的内存区域划分 JVM 执行流程 堆 堆的作用 JVM参数设置 堆的组成 垃圾回收 堆内存管理 类加载 类加载的基本流…

Vue事件绑定

目录 前言 Vue事件处理 指令的语法格式 事件绑定指令—v-on 回调函数 前言 我们知道如何在原生js中实现事件绑定&#xff0c;那在vue中如何实现呢&#xff1f; Vue事件处理 指令的语法格式 <标签 v-指令名&#xff1a;参数名"表达式">{{插值语法}}</…

MQ四大消费问题一锅端:消息不丢失 + 消息积压 + 重复消费 + 消费顺序性

RabbitMQ-如何保证消息不丢失 生产者把消息发送到 RabbitMQ Server 的过程中丢失 从生产者发送消息的角度来说&#xff0c;RabbitMQ 提供了一个 Confirm&#xff08;消息确认&#xff09;机制&#xff0c;生产者发送消息到 Server 端以后&#xff0c;如果消息处理成功&#xff…

WebGl-Blender:建模 / 想象成形 / 初识 Blender

一、理解Blender 欢迎来到Blender&#xff01;Blender是一款免费开源的3D创作套件。 使用Blender&#xff0c;您可以创建3D可视化效果&#xff0c;例如建模、静态图像&#xff0c;3D动画&#xff0c;VFX&#xff08;视觉特效&#xff09;快照和视频编辑。它非常适合那些受益于…

解密网络世界的秘密——Wireshark Mac/Win中文版网络抓包工具

在当今数字化时代&#xff0c;网络已经成为了人们生活和工作中不可或缺的一部分。然而&#xff0c;对于网络安全和性能的监控和分析却是一项重要而又复杂的任务。为了帮助用户更好地理解和解决网络中的问题&#xff0c;Wireshark作为一款强大的网络抓包工具&#xff0c;应运而生…

Python基础入门----如何使用 Pipenv 在项目目录中创建虚拟环境

文章目录 引言Pipenv 简介安装 Pipenv在项目目录中创建虚拟环境1. 进入你的项目目录2. 设置环境变量3. 创建虚拟环境4. 激活虚拟环境结论引言 在Python开发中,使用虚拟环境是一种良好的实践,它可以帮助开发者管理项目的依赖,并避免不同项目间的依赖冲突。Pipenv 是一个流行…

nginx安装搭建

下载 免费开源版的官方网站&#xff1a;nginx news Nginx 有 Windows 版本和 Linux 版本&#xff0c;但更推荐在 Linux 下使用 Nginx&#xff1b; 下载nginx-1.14.2.tar.gz的源代码文件&#xff1a;wget http://nginx.org/download/nginx-1.14.2.tar.gz 我的习惯&#xff0…

【excel技巧】如何取消excel隐藏?

Excel工作表中的行列隐藏了数据&#xff0c;如何取消隐藏行列呢&#xff1f;今天分享几个方法给大家 方法一&#xff1a; 选中隐藏的区域&#xff0c;点击右键&#xff0c;选择【取消隐藏】就可以了 方法二&#xff1a; 如果工作表中有多个地方有隐藏的话&#xff0c;还是建…

专业调色软件 3D LUT Creator Pro 激活中文 for mac

3D LUT Creator与彩 色 图 像一起工作的简单性和清晰度不会让任何人无动于衷。此外&#xff0c;扩展名为.3dl的文件可以导入到Adobe Photoshop&#xff0c;因此您可以将这些设置作为调整图层应用&#xff0c;不仅可以将它们应用于位图图像&#xff0c;还可以将其应用于矢量图形…

Pytorch教程(代码逐行解释)

0、配准环境教程 1、开始导入相应的包 import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensortorch是pytorch的简写 torch.utils.data import DataLoader 是用于读取数…

抖斗音_快块手直播间获客助手+采集脚本+引流软件功能介绍

软件功能&#xff1a; 支持同时采集多个直播间&#xff0c;弹幕&#xff0c;关*注&#xff0c;礼*物&#xff0c;进直播间&#xff0c;部分用户手*号,粉*丝团采集 不支持采集匿*名直播间 设备需求&#xff1a; 电脑&#xff08;win10系统&#xff09; 文章分享者&#xff1…

线程有哪些状态

线程的生命周期 线程在Java中有以下几种状态&#xff1a; 新建&#xff08;New&#xff09;&#xff1a;初始化状态就绪&#xff08;Runnable&#xff09;&#xff1a;可运行、运行状态阻塞&#xff08;Blocked&#xff09;&#xff1a;等待状态&#xff0c;无时限等待&#…

【k8s集群搭建(一):基于虚拟机的linux的k8s集群搭建_超详细_解决并记录全过程步骤以及自己的踩坑记录】

虚拟机准备3台Linux系统 k8s集群安装 每一台机器需要安装以下内容&#xff1a; docker:容器运行环境 kubelet:控制机器中所有资源 bubelctl:命令行 kubeladm:初始化集群的工具 Docker安装 安装一些必要的包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另两…

dalle3:Improving image generation with better captions

文生图——DALL-E 3 —论文解读——第一版-CSDN博客文章浏览阅读236次。本文主要是DALLE 3官方第一版技术报告&#xff08;论文&#xff09;的解读。 一句话省流版&#xff0c;数据方面&#xff0c;训练时使用95%模型&#xff08;CoCa&#xff09;合成详细描述caption 5%原本人…

【Python】【应用】Python应用之一行命令搭建http、ftp服务器

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;Python应用&…

R语言——taxize(第一部分)

ropensci 系列之 taxize &#xff08;中译手册&#xff09; taxize 包1. taxize支持的网络数据源简介目前支持的API&#xff1a;针对Catalogue of Life&#xff08;COL&#xff09; 2. 浅尝 taxize 的一些使用例子2.1. **从NCBI上获取唯一的分类标识符**2.2. **获取分类信息**2…

【LeetCode刷题-滑动窗口】-- 643.子数组最大平均数I

643.子数组最大平均数I 方法&#xff1a;滑动窗口 class Solution {public double findMaxAverage(int[] nums, int k) {int n nums.length;int winSum 0;//先求出第一个窗口的和for(int i 0;i<k;i){winSum nums[i];}//通过遍历求出除了第一窗口的和int res winSum;fo…