全网最全ssh:远程连接服务器学习,教你十分钟学会

news2025/1/29 11:57:42

 远程连接服务器简介

SSH是如何工作的?

认证阶段

ssh修改配置文件

配置文件注释

 练习

试验1

实验2

测试


 远程连接服务器简介

1、什么是远程连接服务器
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。

2、远程连接服务器的功能

分享主机的运算能力

服务器类型:有限度开放连接

工作站类型:只对内网开放

3、远程连接服务器的类型(以登录的连接界面来分类)

文字接口

明文传输:Telnet、RSH等,目前非常少用

加密传输:SSH为主,已经取代明文传输

图形接口:XDMCP、VNC、XRDP等

4、文字接口连接服务器

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

例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。

5.SSH端口号是什么?

当SSH应用于STelnet,SFTP以及SCP时,使用的默认SSH端口都是22。当SSH应用于NETCONF时,可以指定SSH端口是22或者830。SSH端口支持修改,更改后当前所有的连接都会断开,SSH服务器开始侦听新的端口。


SSH是如何工作的?

SSH由服务器和客户端组成,在整个通信过程中,为建立安全的SSH通道,会经历如下几个阶段:

  1. 连接建立

    SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。

  2. 版本协商

    SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号。

  3. 算法协商

    SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。

  4. 密钥交换

    服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。

  5. 用户认证

    SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。SSH支持以下几种认证方式:

    • 密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。
    • 密钥(publickey)认证:客户端通过用户名,公钥以及公钥算法等信息来与服务器进行认证。
    • password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
    • all认证:只要满足密码认证和密钥认证其中一种即可。
  6. 会话请求

    认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。

  7. 会话交互

    会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互。


认证阶段

 

SSH提供两种认证方法:

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

ssh修改配置文件

 ssh配置文件:/etc/ssh/sshd_config

配置文件注释

修改配置文件

 ssh配置文件:/etc/ssh/sshd_config

ssh默认配置文件
17.#Port 22    #监听端口,默认监听22端口  【默认可修改】
18.#AddressFamily any     #IPV4和IPV6协议家族用哪个,any表示二者均有
19.#ListenAddress 0.0.0.0    #指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】
20.#ListenAddress ::     #指明监听的IPV6的所有地址格式
22.# The default requires explicit activation of protocol 1  
23.#Protocol 2            #使用SSH第二版本
25.# HostKey for protocol version 1    #一版的SSH支持以下一种秘钥形式
26.#HostKey /etc/ssh/ssh_host_key
27.# HostKeys for protocol version 2   #使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置
28.HostKey /etc/ssh/ssh_host_rsa_key       # rsa私钥认证 【默认】
29.#HostKey /etc/ssh/ssh_host_dsa_key      # dsa私钥认证
30.HostKey /etc/ssh/ssh_host_ecdsa_key     # ecdsa私钥认证
31.HostKey /etc/ssh/ssh_host_ed25519_key   # ed25519私钥认证
35.#ServerKeyBits 1024     #主机秘钥长度
40.# Logging
41.# obsoletes QuietMode and FascistLogging
42.#SyslogFacility AUTH
43.SyslogFacility AUTHPRIV    #当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
44.#LogLevel INFO           #日志的等级
45.# Authentication:
48.#LoginGraceTime 2m      #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
49.#PermitRootLogin yes      #是否允许管理员远程登录,'yes'表示允许
50.#StrictModes yes      #是否让sshd去检查用户主目录或相关文件的权限数据
51.#MaxAuthTries 6     #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
52.#MaxSessions 10    #允许的最大会话数
59.AuthorizedKeysFile .ssh/authorized_keys  #选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
79.PasswordAuthentication yes      #是否允许支持基于口令的认证
83.ChallengeResponseAuthentication no   #是否允许使用键盘输入身份验证,也就是xshell的第三个登录方式
129.#UseDNS yes   #是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
146.Subsystem sftp /usr/libexec/openssh/sftp-server     #支持 SFTP ,如果注释掉,则不支持sftp连接
154.AllowUsers user1 user2    #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

 练习

实验1.两台机器:第一台机器作为客户端,第二台机器作为服务器,在第一台使用rhce用户免密登录第二台机器

第1步:创建目录

mkdir /etc/.ssh

第2步:在客户端,生成公钥和私钥
在Linux上使用的ssh-keygen的命令:ssh-key-generate: 生成ssh的密钥

ssh-keygen -t rsa -b 2048

第3步:使用本地可用的密钥授权远程计算机上的登录

ssh-copy-id -i root@192.168.233.233(服务器的IP)

 尝试在第一台机器登录第二台机器(登录成功) 

实验2.禁止root用户远程登录和设置三个用户sshuser1, sshuser2, sshuser3, 只允许sshuser3登录,不允许sshuser1, sshuser2登录

第1步(创建三个用户,并且配置密码123456)

[root@fanshun /]# useradd sshuser1
[root@fanshun /]# useradd sshuser2
[root@fanshun /]# useradd sshuser3
[root@fanshun /]# echo "123456"|passwd --stdin sshuser1
Changing password for user sshuser1.
passwd: all authentication tokens updated successfully.
[root@fanshun /]# echo "123456"|passwd --stdin sshuser2
Changing password for user sshuser2.
passwd: all authentication tokens updated successfully.
[root@fanshun /]# echo "123456"|passwd --stdin sshuser3
Changing password for user sshuser3.
passwd: all authentication tokens updated successfully

第2步(禁止root用户远程登录,只允许sshuser3登录,不允许sshuser1, sshuser2登录)

AllowUsers sshuser3
PermitRootLogin no

第3步(重启sshd服务)

systemctl restart sshd

第4步(测试root是否可以远程连接,sshuser3可否登录,sshuser1可否登录)

root测试

sshuser3测试

 

sshuser1测试

测试成功

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

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

相关文章

JSP学习笔记一

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

shell第七天作业——awk(上)

题目 1、获取根分区剩余大小 2、获取当前机器ip地址 3、统计出apache的/var/log/httpd/access_log文件中访问量最多的前3个IP 4、打印/etc/passwd中UID大于500的用户名和uid 5、/etc/passwd 中匹配包含root或sys或tcp的任意行 6、请打印出/etc/passwd 第一个域&#xff0…

STM32MP157驱动开发——Regmap API

STM32MP157驱动开发——Regmap API0.前言一、Regmap API 简介1.Regmap 驱动框架2.regmap 结构体3.regmap_config 结构体4.Regmap 操作函数①Regmap 申请与初始化②Regmap释放③regmap 设备访问 API 函数5. regmap_config 掩码设置二、驱动开发1.修改设备结构体,添加…

RxJava VS kotlin flow

1.基础概念介绍 1.1 观察者模式 观察者模式,其实对于Android开发者而言,并不陌生,button的setOnClickListener,就是一个典型的观察者模式。控件button是被观察者,它产生一个事件(点击),观察者OnClickList…

量化策略——准备2 量化技能树量化术语

文章目录量化技能树量化/金融术语1. 俗语2. 持仓术语3. 资金术语4. 策略术语5. 股票软件界面实用术语量化必然用到的核心价格数据其他数据/指标含义6. 委托单术语量化技能树 首先,量化金融(Quantitative Finance,简称“量化”,Qu…

《小猫猫大课堂》三轮1——深度解析数据在内存中的存储

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重…

学习网络协议

概述 先从知乎盗个图:怎么开始学习网络协议? - 知乎 1、应用层 作用:定义数据格式并按照对应的格式解读数据。 2、传输层 作用:定义端口,标识应用程序身份,实现端口到端口的通信。 3、网络层 作用&…

5个技巧提高项目领导技能

作为项目经理,一个典型的工作日涉及处理许多任务。监督不同的时间表和里程碑。解决问题,主动解决瓶颈。 这些后勤工作很重要,但您也知道成功的项目管理比协调这些细节要多得多。为了做好你的工作(并且把它做好)&am…

C语言模拟QT的信号与槽功能

文章目录前言一、Qt信号与槽的实现机理二、简化后的实现步骤1. 定义一些必要的宏2. 实现声明信号的宏3. 实现发射信号的宏4. 取代QObject类5. 实现connect函数6. 可有可无的slots三、完整的代码实现四、使用方法与QT中的区别1. SIG_SLOT_OBJ取代QObject2. 定义信号不同3. 发射信…

【NI Multisim 14.0原理图环境设置——原理图的组成】

目录 序言 一、原理图的组成 👬 1. 元器件 👬2. 仪表 👬3.导线 👬4.丝印层 👬5. 端口 👬6.网络标号 👬7.电源符号 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设…

为iframe正名,你可能并不需要微前端

作者:刘显安(码怪) 任何新技术、新产品都是有一定适用场景的,它可能在当下很流行,但它不一定在任何时候都是最优解。 前言 最近几年微前端很火,火到有时候项目里面用到了iframe还要偷偷摸摸地藏起来生怕被别人知道了,…

Linux学习笔记——Tomcat安装部署

5.2、Tomcat安装部署 5.2.1、简介 Tomcat是由Apache开发的一个Servlet容器,实现了对Servlet和JSP的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说,Tomcat是一个WEB应用…

内核解读之内存管理(3)内存管理三级架构之内存区域zone

文章目录1、zone类型2、zone结构体3、zone的初始化流程1、zone类型 NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对于任何一个CPU访问本地内存的速度比访问远程内存的速度要快, 而Linux为了兼容NUMA结构, 把物理内存…

Flink数据流类型之间的转换(WindowedStream、DataStream、KeyedStream、AllWindowStream之间的转换)

Flink提供了一些流API,其中包括WindowedStream、DataStream、KeyedStream和AllWindowStream。 🍊WindowedStream是一种特殊的流,其中数据已按时间或数据元素的键进行分组,并且每个分组的数据都在窗口中按时间划分。这意味着&…

2023年出入境政策-喜忧参半

2023年已经到来,随着卫健委公布中国防控新冠措施调整优化以后,出入境政策相应也有了很大变化,知识人网小编概括为喜忧参半。喜的是从国外入境中国不再需要集中隔离;忧的是有些国家对于中国人入境增加了核酸检测要求。下面我们就这…

第一章 Java入门开发

第一章 Java入门开发 目录一. 概述二. JDK1. 概述2. 安装3. JDK目录一. 概述 Java是一门高级程序设计语言,是支持跨平台和完成面向对象的程序设计语言。针对不同的开发市场,sun公司将Java分为Java SE(标准版…

关于clip通信架构设计的调研

网络上大部分关于clip-as-service的描述都是关于它如何使用,基于它的编码功能上去计算文本相似度,根据文字推荐图片等等,只有作者的创作思路里面提及通信架构的设计。 作者博客: 链接: link 如何解决多个客户端同时请求服务端的场…

STS4中MVC项目中把log4j从1.x升级到2.x中遇到的两个问题

文章目录问题一 升级后看Maven Dependencies中还是有依赖1.x的log4j问题二 web.xml配置不对项目原来的log4j版本是1.2.14,有漏洞需要升级到2.18.0.问题一 升级后看Maven Dependencies中还是有依赖1.x的log4j 原因是有关联依赖, 项目中别的jar库有依赖低…

【算法笔记】【专题】RMQ 问题:ST表/树状数组/线段树

0. 前言 好久没更算法笔记专栏了,正好学了新算法来更新…… 这也是本专栏的第一个专题问题,涉及到三种数据结构,如果写得有问题请各位大佬多多指教,谢谢! 1. 关于 RMQ 问题 RMQ 的全称是 Range Minimum/Maximum Que…

《Linux运维实战:Centos7.6基于docker-compose一键离线部署单节点redis6.2.8 》

一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的redis针对不同的客户环境需要多次部署,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对redis6.2.8…