ssh远程登录服务

news2024/11/27 12:41:30

目录

1.1版本协商阶段

1.2密钥和算法协商阶段

1.3认证阶段(两种认证方法):

2.1.安装ssh

2.2.配置文件分析:

3.1配置ssh监听端口号

3.2拒绝以root身份登录服务器

3.3虚拟机之间实现免密登录

3.4xshell免密登录


SSH (Secure Shell Protocol,安全壳程序协议)由IETF的网络小组(Network Working
Group)所制定,可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。
●ssh协议本身提供两个服务器功能:
。一个是类似telnet的远程连接使用shell的服务器;
。另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。
 

SSH工作过程:
●服务端与客户端要经历如下五个阶段:
       过程                                                                                        说明


版本号协商阶段                                       SSH目前包括SSH1和SSH2两个版本,双方通过版本协

                                                                商确定使用的版本

密钥和算法协商阶段                                 SSH支持多种加密算法,双方根据本端和对端支持的算                                                                        法,协商出最终使用的算法

认证阶段                                                  SSH客户端向服务器端发起认证请求,服务器端对客户                                                                    端 进行认证

会话请求阶段                                          认证通过后,客户端向服务器端发送会话请求


交互会话阶段                                          会话请求通过后,服务器端和客户端进行信息的交互



 

1.1版本协商阶段


服务器端打开端口22,等待客户端连接;
.客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,
包括版本标志字符串,格式为SSH-<主协议版本号>. <次协议版本号>. <软件版本号>,协议版本号
由主版本号和次版本号组成,软件版本号主要是为调试使用。
●客户端收到报文后,解析该数据包,如果服务器的协议版本号比自己的低,且客户端能支持服务
器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。
●客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版
本号,决定是否能同客户端一起工作。如果协商成功,则进入密钥和算法协商阶段,否则服务器
断开TCP连接
●注意: .上述报文都是采用明文方式传输
 


1.2密钥和算法协商阶段


●服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算
法列表、MAC (Message Authentication Code,消息验证码)算法列表、压缩算法列表等等
●服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法
●服务器端和客户端利用DH交换(Diffie-Hellman Exchange) 算法、主机密钥对等参数,生成
会话密钥和会话ID。
由此,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使
用会话密钥进行加密和解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过

●会话密钥的生成:
。客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。
(服务器的公钥产生过程:服务器每次启动.shd服务时,该服务会主动去找/etc/ssh/ssh_ host*文件,若系统刚装完,由于没有这些公钥文件,因此sshd会主动去计算出这些需要的公钥文件,同时也会计算出服务器自己所需要的私钥文件。)
。服务器生成会话ID,并将会话ID发给客户端。
。若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的
~/.ssh/known_ hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到
的与之前的记录是否有差异。客户端生成会话密钥,并用服务器的公钥加密后,发送给服务
器。
。服务器用自己的私钥将收到的数据解密,获得会话密钥。
。服务器和客户端都知道了会话密钥,以后的传输都将被会话密钥加密
 

1.3认证阶段(两种认证方法):


●基于口令的认证(password认证) :客户端向服务器发出password认证请求,将用户名和密
码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户
名和密码进行比较,并返回认证成功或失败消息。
●基于密钥的认证(publickey认证) :
。客户端产生- -对公共密钥, 将公钥保存到将要登录的服务器上的那个账号的家目录
的.ssh/authorized_ keys文件中
。认证阶段:客户端首先将公钥传给服务器端服务器端收到公钥后会 与本地该账号家目录下的
authorized_ keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一-段随机字
符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随
机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的- -样,则认证通
过,否则,认证失败。
●注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以
再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进
行。直到认证成功或者认证次数达到上限,服务器关闭连接为止
 


2.1.安装ssh


[root@server ~]# yum install openssh-server 


2.2.配置文件分析:



[root@server ~]# vim /etc/ssh/sshd_ config
#Port 22 #默认监听22端口,可修改
#AddressFamily any # IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址(默认可修改)
#ListenAddress :: #指明监听的IPV6的所有地址格式
#HostKey /etc/ssh/ssh. _host_ _rsa _key    # rsa私钥认证,默认
#HostKey /etc/ssh/ssh_ _host_ ecdsa _key # ecdsa私钥认证
#HostKey /etc/ssh/ssh_ host_ ed25519_ _key # ed25519私钥认证
#SyslogFacility AUTH  # ssh登录系统的时会记录信息并保存在/var/1og/secure
#LogLeve1 INFO         #日志的等级

#Logi nGraceTime 2m  # .登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
#Pe rmi tRootLogin prohibit-password # 只允许root以密钥形式登录,不能以密码的方
式登录可以设置Permi tRootLogin yes, 允许管理员登录
#StrictModes yes   # .是否让sshd去检查用户主目录或相关文件的权限数据
#MaxAuthTries 6  # 最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间
                              后才能再次输入密码
#MaxSessions 10        #允许的最大会话数

AuthorizedKeysFile . ssh/ authorized _keys      #选择基于密钥验证时,客户端生成一 对公
                                                              私钥之后,会将公钥放到. ssh/authorizd_ _ke里面
#Pa{swordAuthentication yes # 登录ssh时是否进行密码验证
#Permi tEmptyPasswords no   #登录ssh时是否允许密码为空

Subsystem sftp /usr/libexec/openssh/sftp-server      #支持SFTP ,如果注释掉,贝
                                                                                  不支持sftp连接
AllowUsers user1 user2      #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录
                                            的用户。如果名单中没有的用户,则提示拒绝登录
 


3.1配置ssh监听端口号



●第一步:server端操作,编辑配置文件
[root@server ~]# vim /etc/ssh/sshd_ config
port 2222          #修改第21行参数,去掉#,改为2222


●第二步:server端操作,重启服务
[root@server ~]# systemctl restart sshd
[ root@server ~]# netstat -ntlp #查看端口号是否改变


●第三步: node1端操作,ssh登录服务器
 [root@node1 ~]# ssh root@192.168.48.130 # 默认登录会被拒绝
ssh: connect to host 192.168.48.130 port 22: Connection refused

[root@node1 ~]# ssh -p 2222   root@192.168.48.130   #指明以2222端口号登录
root@192.168.48.130's password:

 [root@server ~]#
注销.
Connection to 192.168.48.130 closed.
[ root@node1 ~]#
●注意:修改ssh端口号时必须关闭selinux
#定位server端, 修改会原来的22端口
[rogt@server ~]# vim /etc/ssh/sshd_config
[root@server ~]# systemctl restart sshd
[root@server ~]# netstat -ntlp 
 

#开启selinux
 [root@server ~]# vim /etc/selinux/config
SELINUX=enforcing # 改为enforcing即启
[ root@server ~]# reboot
#重启生效,等待
[root@server ~]# vim /etc/ssh/sshd_ config
#重新修改端口号为3333
Port 3333
#重启服务后会报错,selinux会拦截端口号修改
 [ root@server ~]# systemctl restart sshd
 Job for sshd.service fai led because the contro1 process exited with error
code .
See "systemctl status sshd. service" and "journalct1 -xeu sshd. service" for
details.

[root@server ~]# setenforce 0   # 临时关闭selinux
[root@server ~]# getenforce     #查看selinux状态
Permissive                                #临时关闭,不拦截但会记录行为
 [root@server ~]# systemct] restart sshd      #临时关闭selinux后重后限务成功
#注意:修改聊口这类的系统参数,需要关闭seitinux或配Tselinux让其放行

 

3.2拒绝以root身份登录服务器



●ssh-keygen:用于生成、管理密钥
●格式
 [root@node1 ~]# ssh-keygen     -t    rsa
●分析
。-t: 指定加密类型
。rsa: rsa公钥加密算法,可以产生公钥和私钥
。注意:执行后对应账户目录下的隐藏目录.ssh中有2个文件:
■/root/.ssh/id_ rsa: 本机私钥文件
■/root/.ssh/id_ rsa.pub: 本机公钥文件
 

●第一步:定位server,编辑配置文件
[root@server ~]# vim  /etc/ssh/sshd_config. d/01-permitrootlogin. conf 

Permi tRootLogin no          # yes修改为no,拒绝以root身份登录服务器
[root@server ~]# systemctl restart sshd
●第二步:定位node1,测试远程登录
[root@node1 ~]# ssh root@192.168.48.130        #以root身份登录被拒绝
root@192 . 168.48.130's passwordI
Permission denied, please try again.
 

3.3虚拟机之间实现免密登录


●第一步:定位node1,制作公私对
 [ root@node1 ~]# ssh-keygen    -t  rsa    #一路回车即可
●第二步:定位node1,将公钥上传
[root@node1 ~]# ssh-copy-id    root@13.168.48.130  #将node1公钥上传给130主机
The authenticity of host ' 192.168.48.130 (192.168.48.130)' can't be
established .
ED25519 key fingerprint is
SHA256: K7nvJFkfIh+p9YytEGR44wLbTfpB0Y52oVou0UdG6nc.
This key is not known by any other names
 Are you sure you want to continue connecting (yes/no/ [fingerprint])? yes #
输入
 /usr/bin/ssh-copy-id: INFO: attempting to 1og 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 insta11 the new keys
root@192.168.48.130's password:
#输入登录密码
 

第三步:客户端测试

[root@node主~]# ssh root@192.168.48.130
Activate the web console with: systemct1 enable --now cockpit. socket
Register this system with Red Hat Insights: insights-client --register
Create an account or view a11 your systems at https://red. ht/insights-
dashboard
Last login: Wed May 31 08:32:15 2023 from 192.168.48.1
’ [root@server ~]#
注销
Connection to 192.168. 48.130 closed.
第四步:由于目标是双向免密,只需要在server'端制作公私钥对,将其上传给node1端即可
 

3.4xshell免密登录


●xshell使用密钥登陆
●之前xshell使用的是密码登录,现在通过密钥的配置,实现无密码登录
#注意:先在服务器端检查/root/ . ssh/authorized_ keys是否存在,它时存储公钥的文件,若不存
在需要新建

#服务器端操作

 [ root@server ~]# cd / root
 [root@server ~]# 1s -a
 [root@server ~]# mkdir . ssh
 [root@server ~]# cd   .ssh
[root@server .ssh]# vim  authorized_ keys
#有时需要注意. ssh目录的权限.
 

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

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

相关文章

NumPy 相关函数

本篇文章介绍了Python中NumPy库的相关函数 np.corrcoef() 函数。 NumPy 中的相关性 相关系数是一个数字值&#xff0c;表示数据集给定特征之间的关系。 相关性可以是正相关&#xff0c;这意味着它们具有直接关系&#xff0c;并且一个特征的增加会导致另一个特征的增加。 负相…

Unity 解决因版本不同打开项目大量报错

文章目录 问题描述解决办法 问题描述 当我们在使用Unity不同版本打开同一项目时&#xff0c;可能会因为版本的不同&#xff0c;编辑器大量报错&#xff0c;特别是从高版本打开低版本 解决办法 删除项目文件夹下的 Library、 Logs、 Packages文件夹 然后打开项目重新生成这些…

python自动化测试(十):EcShop删除商品功能

前置条件&#xff1a; 本地部署&#xff1a;ECShop的版本是3.0.0、Google版本是 Google Chrome65.0.3325.162 (正式版本) &#xff08;32 位&#xff09; py的selenium版本是3.11.0 目录 一、前置代码 二、删除操作 2.1 进入商品列表 2.2 通过货号进行删除 一、前置代…

nodejs+vue啄木鸟便民维修网站设计与实现-计算机毕业设计python-django-php

1、目的&#xff1a; 设计一个适用于便民家电维护的平台。该系统方便管理员对用户信息的管理&#xff0c;使用户在不掌握任何专业知识的前提下&#xff0c;可以方便快速的上手&#xff0c;因此项目应具有广泛使用人群。该课题应包括&#xff08;至少包括&#xff09;以下几个基…

断货、售罄,双十一首日西圣Olite开放式耳机杀疯了!

西圣Olite首战双十一&#xff0c;仅需一天&#xff0c;就已经“售罄缺货”。作为国内深耕智能声学领域多年的 xisem西圣科技&#xff0c;在10月最新推出的一款Olite开放式耳机&#xff0c;售价仅为199&#xff0c;自问世之初就迅速引起了广泛的关注和需求&#xff0c;只因超高性…

selenium自动化测试入门 —— 下拉框元素定位

选择获取反选下拉框元素首先要实例化select元素 from selenium.webdriver.support.ui import Select # 引入包 select_elementSelect(element) # 实例化select 三种常用选择方法 select_element. select_by_index(index) 根据index定位&#xff0c;从0开始 select_element. …

快速解决!打开软件提示缺失x3daudio1_7.dll的解决方案

在我理解中&#xff0c;x3daudio1 7.dll丢失的问题是许多电脑用户都可能遇到的一个常见问题。这个问题可能会导致电脑无法正常播放音频&#xff0c;甚至可能影响到电脑的正常使用。那么&#xff0c;面对这样的问题&#xff0c;我们应该如何进行修复呢&#xff1f;下面&#xff…

[每日一氵] cudaDevAttrMaxBlocksPerMultiprocessor is not a member of cudaDeviceAttr

省流版&#xff1a; 本来懒得氵了&#xff0c;结果搜了下没啥结果&#xff0c;看了CUDA文档才知道&#xff0c;CUDA10还没有这个枚举值, CUDA11以及以上的版本才有 带着 CINN 编译 Paddle 报错: cmake .. -DWITH_GPUON -DWITH_TESTINGON -DCINN_ONLYOFF -DWITH_CINNON/Paddle…

微信便利签怎么弄?微信中有便捷操作的便签小程序吗

微信在日常办公及生活中比较重要的作用就是&#xff1a;聊天、视频会议、语音会议等&#xff0c;这是大家认知中的微信。除了这些功能以外&#xff0c;微信中还有很多小程序&#xff0c;小程序也能够辅助大家日常的办公。 比如&#xff0c;工作中我们需要制定工作计划&#xf…

机器学习---支持向量机的初步理解

1. SVM的经典解释 改编自支持向量机解释得很好 |字节大小生物学 (bytesizebio.net) 话说&#xff0c;在遥远的从前&#xff0c;有一只贪玩爱搞破坏的妖怪阿布劫持了善良美丽的女主小美&#xff0c;智勇双全 的男主大壮挺身而出&#xff0c;大壮跟随阿布来到了妖怪的住处&…

程序员使用 ChatGPT的 10 种最佳方式

自2022年11月30日发布以来&#xff0c;ChatGPT持续爆火&#xff0c;它在各个方面都产生了巨大的影响力&#xff0c;在软件开发行业&#xff0c;ChatGPT 有潜力彻底改变我们思考和处理软件开发的方式。 ChatGPT 正在改变软件开发流程&#xff0c;它理解自然语言和生成类人文本的…

【AI视野·今日NLP 自然语言处理论文速览 第六十一期】Tue, 24 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 24 Oct 2023 (showing first 100 of 207 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LINC: A Neurosymbolic Approach for Logical Reasoning by Combining …

Cesium笔记(1):Vite+Vue3搭建Cesium

创建项目 ViteVue3创建一个vue的项目 npm create vitelatest进入项目文件&#xff0c; 安装依赖 npm install运行项目npm run dev, cesium 开始引入我们的cesium 安装插件 npm i cesium vite-plugin-cesium vite -D添加配置文件 需要安装 vite-plugin-cesium&#xff…

antv/g6 节点、及自定义节点

节点 AntV G6 中内置节点支持的通用属性通常包括以下几个&#xff1a; id&#xff1a;节点的唯一标识符。 x 和 y&#xff1a;节点的位置坐标。 label&#xff1a;节点的标签文本。 style&#xff1a;节点的样式&#xff0c;用于设置节点的外观&#xff0c;可以包括填充颜色…

有色金属冶炼VR虚拟场景互动教学有何优势

真实模拟&#xff1a;VR虚拟现实技术可以提供一个真实的虚拟环境&#xff0c;模拟钢铁制造现场&#xff0c;包括设备、工艺流程、操作规程等&#xff0c;使学员获得直观、真实的体验。 安全可靠&#xff1a;钢铁制造技能培训可以在虚拟环境中进行&#xff0c;不会对人员或设备造…

LeetCode | 876. 链表的中间结点

LeetCode | 876. 链表的中间结点 OJ链接 我们这里有一个很好的思路&#xff0c;我们定义两个变量&#xff0c;第一个变量走两步&#xff0c;第二个变量走一步&#xff0c;一直循环&#xff0c;当第一个变量走到最后的时候停下来&#xff0c;这个时候第二个变量就是中间的那个…

谷歌AlphaFold模型迎来重大突破!可以预测生物分子、配体

11月1日&#xff0c;谷歌旗下的AI研究机构DeepMind在官网发布了&#xff0c;蛋白质结构预测模型 AlphaFold的最新技术进展&#xff1a;已显著提升了预测准确性&#xff0c;并将覆盖范围从蛋白质扩展至其他生物分子&#xff0c;包括配体&#xff08;小分子&#xff09;。 据悉&…

Midjourney干货篇 - 与AI对话,如何写好prompt

文章目录 1、语法2、单词3、要学习prompt 框架4、善用参数&#xff08;注意版本&#xff09;5、善用模版6、临摹7、垫图 木匠不会因为电动工具的出现而被淘汰&#xff0c;反而善用工具的木匠&#xff0c;收入更高了。 想要驾驭好Midjourney&#xff0c;可以从以下方面出发调整&…

回归预测 | Matlab实现SO-CNN-SVM蛇群算法优化卷积神经网络-支持向量机的多输入单输出回归预测

Matlab实现SO-CNN-SVM蛇群算法优化卷积神经网络-支持向量机的多输入单输出回归预测 目录 Matlab实现SO-CNN-SVM蛇群算法优化卷积神经网络-支持向量机的多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.SO-CNN-SVM蛇群算法优化卷积神经网络-支持向量…

树形结构数据展示及返回上一级

11月1日&#xff0c;又是搬砖的一天&#xff0c;让我们红尘作伴&#xff0c;活的潇潇洒洒。。。。。。 html <template><view class"content"><view><input class"sreachTool" v-model"toolValue"/><van-icon name…