SSH远程连接服务

embedded/2024/10/5 10:31:52/

一.SSH协议

SSH应用层协议

作用:远程连接设备,方便操作。

服务器的管理方式:

1.本地管理方式(物理服务器

安装系统,故障修复

2.远程连接的方式

二.ssh协议的结构

1.服务端,sshd服务端程序

开启ssh服务

但凡启动一个软件都会有相应的进程存在,但凡适用于网络连接的服务都会有对应的端口。

如上图所示,这个sshd进程就是系统上的ssh服务,这个服务的主要作用就是提供网络连接的,

任何一个适用于网络连接的服务启动之后,在机器上都会有对应的端口,

ssh协议这是一个基于传输层TCP协议工作的一个服务,默认情况下会在机器上启动一个22的端口,

当机器上安装任何一个远程连接的客户端软件,使用这个软件去连接设备的时候,默认就是在连接这个设备上的22号端口。

如上图所示,sshd是ssh服务所产生的进程,而这个sshd服务是openssh-server的软件产生的。

而有些系统是不带有这个 openssh-server的软件的,需要我们自行在服务端安装,才可以使用客户端设备去连接服务端的22号端口。

2.客户端,ssh客户端程序

在windows上面安装客户端连接设备,可以使用XManager/Xshell。secure CRT,putty,

在Linux上面安装客户端连接设备,openssh-clients

如上图所示,可以在Linux操作系统上使用ssh命令就可以去连接其他的设备。

前提网能ping通,

服务器事先要启动着ssh服务,

centos操作系统安装完之后,ssh服务默认是开着的,

乌班图操作系统默认没有ssh服务,自己安装,

三.SSH客户端工具使用

1.远程连接服务器

ssh 用户名@服务器IP

如上图所示,是在Linux操作系统中启动openssh-clients软件,充当客户端远程控制软件,去远程连接其他服务端的22号端口。

2.远程执行命令

ssh 用户名@服务器IP 命令

如上图所示,是在Linux操作系统上启动客户端软件去远程连接其他的Linux服务端。

3.远程拷贝文件

scp 远程拷贝工具

scp 源文件 用户名@服务器IP:目录

两个方向都可以拷贝

如上图所示,可以在客户端启动远程控制软件,双向得拷贝文件,

如上图所示,可以使用scp -r命令拷贝目录。

4.rsync 远程拷贝工具

所有服务器均要安装rsync

这是一个增量拷贝工具,也就是说当使用这个工具多次拷贝数据的时候,只会拷贝变化的数据,没变的数据不会再拷贝。

a是保留文件权限,v是显示文件拷贝过程,

增量拷贝,在第二次拷贝数据的时候,只会拷贝变化的数据

如上图所示,可以使用rsync -av /opt/shell 来拷贝目录。这时这个结尾处少了一个/,代表的就是拷贝这个/opt/下的shell目录。

四.ssh服务的认证方式

也就是说当客户端连接服务器的时候,服务器怎么验证客户端的身份。

认证方式:

1.基于用户名,密码的认证(ssh服务的默认认证方式)

如上图所示,当你使用哪个用户远程连接服务器的时候,服务器ssh服务会跟你要这个用户的密码。

2.基于密钥的认证(需要做额外的配置),之后的操作就不再需要用户密码了。也就是免密ssh

密钥对:公钥(锁)和私钥(唯一能打开这把锁的钥匙),存在唯一对应关系

a)在客户端生成密钥对

b)将公钥拷贝给服务器ssh目录,服务器会将公钥信息保存到对应用户目录/.ssh/authorized_keys文件中。

如上图所示,大概是ssh服务基于密钥的认证方式流程,首先在客户端上生成密钥对,然后我们将客户端上的公钥拷贝给服务器ssh目录,这时服务器上的ssh服务会自动将公钥中的密码提取出来保存到用户家目录中的.ssh目录中,这时系统会自动生成一个文件来保存密钥信息。下次客户端再次连接服务器的时候,会发送私钥信息和连接请求,服务器会自动拿公钥信息去验证私钥。

如果验证通过就不会再向客户端要密码了,

相比于公钥,私钥的信息更加重要。

案例:配置基于密钥的验证

1.在客户端上生成密钥对

如上图所示,是在Linux客户端使用ssh -keygen -t rsa这条命令去生成密钥对,

第一条询问信息在问将这个密钥对的私钥信息的存放位置,

第二条询问信息是在问给私钥文件加密的密码,

第三条信息是在让你再输入一遍密码

如上图所示,一个文件叫id_rsa这个文件保存私钥信息

一个文件叫id_rsa.pub这个文件保存公钥信息。

2.将公钥拷贝到服务端

第一种方式使用scp或者rsync将私钥信息拷贝到用户目录/.ssh/authorized_keys文件中。

第二种方式在Linux和Linux之间有一个便利,也是软件openssh客户端提供的一个命令,就是ssh-copy-id,这个命令,

如上图所示,这是IP为192.168.183.200这个机器将公钥信息拷贝给IP为192.168.183.10这个机器

如上图所示,这是IP为192.168.183.10这个机器,公钥信息保存文件的地址,

如上图所示,此时IP为192.168.183.200的机器在连接IP为192.168.183.10的机器就不再需要密码了。

如上图所示,此时IP为192.168.183.200的机器在远程连接IP为192.168.183.10的机器执行命令的时候就不再需要密码了。

如上图所示,这是再给我机器的martin用户设置密码的操作。

注意两点:

1.基于密钥的ssh是基于用户实现的。

2.基于密钥的ssh是单向的。

五.ssh服务的配置文件/etc/ssh/sshd_config

1.修改ssh服务的默认端口

如上图所示,我们需要将ssh服务的22号端口进行修改,机器端口号是1到65535这样一个取值范围,建议修改ssh服务的端口号为5位数。使用vim编辑器打开文件/etc/ssh/sshd_config的端口号为五位数端口号。

建议ssh服务的端口修改为大于1024的端口,小于1024的端口已经被分配给了其他的应用。

如上图所示,使用命令netstat -antp | grep ssh

来查看ssh服务的端口号。

centos操作系统安装成功以后,防火墙和SELinux都是默认开着的,这会阻止我服务的正常访问.

关闭防火墙

如上图所示,是关闭防火墙的正常命令,

关闭SELinux

如上图所示,是关闭SELinux的操作。

如上图所示,这是使用ssh服务去远程连接Linux虚拟机的操作,此时应该使用命令ssh 登录远程机器的用户@机器IP -p ssh服务的端口号

如上图所示,scp和rsync服务默认也是使用的22号端口来远程拷贝文件,所以也要使用-P选项来修改连接的端口。

2.禁止root用户登录

如上图所示,应该禁止使用root能够使用ssh服务远程连接机器,

在使用普通用户登录机器之后可以使用su - root来切换用户,

3.在远程连接的时候,服务器ssh服务禁用密码认证,只能通过密钥认证,当然在禁用密码认证之前应该事先配置好密钥认证。

禁用密码认证,只能通过密钥认证,当然在禁用密码认证之前应该事先配置好密钥认证。

如上图所示,是在node-02这台机器上将公钥发送给node-01这台机器上的king用户

如上图所示,在node01这台机器上使用vim编辑器打开文件/etc/ssh/sshd_config,修改密码认证为no,即禁用密码认证,随后在配置好king用户的免密ssh远程连接以后,使用systemctl restart sshd来使得sshd服务重新读取配置文件/etc/ssh/sshd_config中的信息。

如上图所示,此时在node02这台机器上使用ssh 用户名@node01机器的IP -p 指定的ssh端口号

来在node02这台机器上远程连接node01这台机器上的king用户。

如上图所示,当禁用node01这台机器上的密码认证之后,即使在windows上使用xshell来远程连接node01的任何一个用户都连接不上,当然这是在没有配置ssh免密登录的前提下。

4.windows和Linux之间配置免密的ssh服务。

首先在客户端即windows上生成密钥对,

下一步将windows上的公钥保存为windows上的文件,随后将这个公钥文件拷贝到服务器上去,

如上图所示,此时将这个公钥文件拷贝到了服务器的king用户的家目录下,

如上图所示,此时使用ls命令可以查看这个公钥文件,

此时可以将这个公钥文件通过>>以追加的方式添加到用户家目录下的.ssh/authorized_keys中,

此时可以禁用服务器node01的密码认证功能,在windows使用ssh免密连接,登录node01机器的king用户,

5.影响ssh连接速度

ssh服务会将你写的主机IP地址翻译成这个IP地址所对应的主机名,

如上图所示,使用vim编辑器打开文件/etc/ssh/sshd_config禁用主机名解析,

如上图所示,可以使用kill -1 PID(服务的父进程)使得这个服务重新读取一下配置文件,

如上图所示,这是禁用ssh服务的主机名解析功能,并且使用kill -1 ssh进程的父进程使得修改的配置生效的操作。


http://www.ppmy.cn/embedded/108554.html

相关文章

uni-app流式接受消息/文件

uni-app流式接受消息/文件 问题描述 今天利用fastgpt搭建了一个局域网进行访问Ai助理,在前端通过api接口进行请求,用于接收后端的发送的流式消息,那么前端可以进行流式的获取到这个消息,也可以进行直接进行在请求发送完成以后&a…

【数据结构入门】排序算法之交换排序与归并排序

前言 在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。 一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想…

CSS英文换行

在CSS中,如果你想让英文单词换行,可以使用word-break: break-all;属性。这个属性会强制浏览器在任何字符之间进行换行,即使没有空格或其他分隔符。 没有加样式前的运行结果 CSS样式 p {word-break: break-all; } 运行结果 这将确保段落内的…

《Nginx 负载均衡详解》

一、引言 在当今互联网时代,随着业务的不断发展和用户量的持续增长,单一服务器往往难以满足高并发的访问需求。为了提高系统的可用性、可靠性和性能,负载均衡技术应运而生。Nginx 作为一款高性能的 Web 服务器和反向代理服务器,提…

Django+Vue音乐推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

Windows与linux中docker的安装与使用

windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop: https://www.docker.com/启用wsl 我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopp…

echarts 水平柱图 科技风

var category [{ name: "管控", value: 2500 }, { name: "集中式", value: 8000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 } ]; // 类别 var total 10000; // 数据…

【Linux】Linux常见指令以及权限理解(上)

【Linux】Linux常见指令以及权限理解 🥕个人主页:开敲🍉 🔥所属专栏:Linux🍊 🌼文章目录🌼 1. Linux背景 1.1 Linux发展史 1.1.1 Unix发展历史 1.1.2 Linux发展历史 1.2 开源 1.3 企…