Linux中怎么搭建SSH远程连接服务器

article/2025/11/9 3:24:40

文章目录

  • Linux中怎么搭建SSH远程连接服务器
    • 一、远程连接服务器:
      • 1、什么是远程连接服务器:
      • 2、远程连接服务器的功能
      • 3、常见的几种远程管理工具方式:
    • 二、SSH连接加密技术:
      • 1、非对称密钥加密:
      • 2、对称密钥加密:
      • 3、密钥技术证书:
        • (1)什么是证书:
        • (2)CA(证书颁发机构):
        • (3)证书发放过程:
    • 三、SSH远程连接验证方式
      • 1、基于口令的安全验证:
      • 2、基于密钥的安全验证:
    • 四、了解SSH配置:
      • 1、检查SSH包的安装:
      • 2、sshd_config配置注解:
      • 3、修改配置文件:
    • 五、搭建SSH服务:
      • 1、基于口令的SSH登录:
      • 2、两台虚拟机之间实现SSH互信,免登录:
      • 3、通过Xshell使用证书进行登录:

Linux中怎么搭建SSH远程连接服务器

一、远程连接服务器:

1、什么是远程连接服务器:

远程连接服务器通过文字或图形接口方式来远程登陆系统,使我们可以在远程终端登陆Linux主机以取得操作主机接口的权限。
SSH建立在应用层基础上的安全协议,该协议目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议,它可以有效地防止远程管理过程中的信息泄露问题。

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

(1)分享主机运算能力
(2)服务器类型有限度开放连接
(3)工作站类型,只对内网开放

3、常见的几种远程管理工具方式:

协议注解
RDPwindows远程桌面管理图形界面
telenetCLI界面下远程管理,几乎所有操作系统都有(内容明文传输)
sshCLI界面下的远程管理,几乎所有操作系统都有(内容加密传输)
RFB图形化远程管理协议 VNC使用的协议

二、SSH连接加密技术:

1、非对称密钥加密:

非对称加密为数据的加密解密提供了一个非常安全的方法,它使用了两把钥匙分别是公钥和私钥。私钥只能由一方安全保管,不可外泄,公钥可以发给任何请求需要的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。

2、对称密钥加密:

发送方和接收方用一个相同的密钥去加密和解密数据。

3、密钥技术证书:

PFX标准: 公钥加密技术12号标准,它为存储和传输用户或服务器私钥、公钥以及证书指定了一个可移植的格式。它是一种二进制格式的文件,也称作PFX文件。该证书包含了私钥公钥,从该证书导出私钥的时候,是需要输入密码的。因此即使别人获取了你的证书,他无法知道提取私钥所需的密码,还是很安全的。
CER: 用于存储公钥证书的文件格式。该证书只包含公钥,类似于访问某些基于https协议传输的网站,该网站的公钥是公开的,它会通过cer这种证书格式发送给客户端。
RSA: 一种非对称密码算法。

(1)什么是证书:

证书说白了就是证明身份,是为了保证访问的人就是你要访问的人。它保证了密钥的合法性,将公钥与拥有对应私钥的主体标识信息捆绑在一起。
证书的格式遵循由国际电信联盟制定的X.509标准

X.509证书包含信息
1、使用者的公钥值
2、使用者的标识信息(如名称或电子邮件)
3、证书的有效时间
4、颁发者的标识信息
5、颁发者的数字签名

证书常用于web服务器身份验证、web用户身份验证、安全电子邮件、Internet协议安全。它是由权威公正的第三方机构CA签发。

(2)CA(证书颁发机构):

CA(Certificate Authority,证书颁发机构):它的核心功能是颁发与管理数字证书,除此之外,它更承担了公钥体系中公钥的合法性检验的责任。

CA的作用包含以下几点
1、处理证书申请
2、鉴定申请者是否有资格接收证书
3、证书的发放、更新
4、接收最终用户数字证书的查询、撤销
5、产生和发布证书吊销列表
6、数字证书、密钥和历史数据的归档

(3)证书发放过程:

在这里插入图片描述
图中RA为注册中心,CA为认证中心。注册中心可以有很多个,它负责审核证书申请者的真实身份。当有用户需要申请证书的时候:首先先向注册中心RA提出申请,RA收到后核实该用户是否符合受理;如果符合那么RA会向CA申请,CA收到后会将证书传给RA,最后由RA将证书传给用户。

三、SSH远程连接验证方式

SSH远程连接验证方式有两种,一种基于口令验证,但不太安全。因此有了第二种基于密钥进行安全验证。

1、基于口令的安全验证:

这个只需要你拥有自己的账号和口令,就可以远程登陆到主机。虽然所有传输的数据都会被加密,但是不能保证你登陆的服务器就是你想登陆的。这很有可能会有别的服务器冒充真正的服务器,不安全。

2、基于密钥的安全验证:

这种就相对比较安全,它依靠的是非对称加密算法传输密钥的。

SSH连接过程:
首先:客户端向服务端发起三次握手,建立连接
1、首先服务端会通过非对称加密,产生一个公钥和私钥
客户端服务端之间开始协商:算法、版本信息,为密钥交换做准备:
2、客户端向服务端发送协议版本、自己支持的加密算法、一个随机数(明文)
3、服务端收到后,选取加密算法然后告诉客户端,除此之外还包含:自己的证书(证书中包含公钥)、一个随机数(明文)
4、客户端验证服务端的证书:验证通过后生成另一个随机数(密文),并用证书中的公钥加密该数,发送给服务端
6、服务端通过自己的私钥解密获得这串随机数
7、之后双方根据约定好的加密算法对上边的三个随机数进行加密,得到一个会话密钥,接下来的通信就用这个会话密钥做对称加密。

如果用图片表示就是这样:
在这里插入图片描述

四、了解SSH配置:

1、检查SSH包的安装:

默认都是安装好的,保险起见,我们检查一下。使用rpm -qf 查看该服务是否安装,发现已经安装。使用rpm -ql 查看该SSH包安装后都释放了哪些文件,我们从中可以看到有关SSH服务端的配置文件在 /etc/ssh/sshd_config 中,除此之外,在该文件的同目录中,还有ssh_config这个文件也是有关SSH配置的,但是该文件是属于客户端的配置文件。
在这里插入图片描述

2、sshd_config配置注解:

vim /etc/ssh/sshd_config(节选,开头数字表示行数)
17 #Port 22
18 #AddressFamily any 
19 #ListenAddress 0.0.0.0
20 #ListenAddress ::
22 HostKey /etc/ssh/ssh_host_rsa_key
23 #HostKey /etc/ssh/ssh_host_dsa_key
24 HostKey /etc/ssh/ssh_host_ecdsa_key
25 HostKey /etc/ssh/ssh_host_ed25519_key
37 #LoginGraceTime 2m
38 #PermitRootLogin yes
39 #StrictModes yes
40 #MaxAuthTries 6
41 #MaxSessions 10
43 #PubkeyAuthentication yes
47 AuthorizedKeysFile      .ssh/authorized_keys
65 PasswordAuthentication yes
69 ChallengeResponseAuthentication no
71 # Kerberos options
115 #UseDNS yes
133 Subsystem       sftp    /usr/libexec/openssh/sftp-server

17默认监听端口为22端口
18IPV4和IPV6协议家族支持哪个,any表示二者均支持
19指明监听的地址,0.0.0.0表示本机的所有地址都可以被登陆
20指明监听的IPV6的所有地址格式,::表示支持本地所有
22默认rsa私钥认证
23支持dsa私钥认证
24支持ecdsa私钥认证
25支持ed25519私钥认证
37登录的宽限时间为2分钟,默认2分钟没有输入密码,则自动断开连接
38是否允许管理员直接登录,yes表示允许
39是否让sshd去检查用户主目录或相关文件的权限数据,yes表示允许
40最大认证尝试次数,6表示最多只有6次机会。继续输错之后需要等待时间才能再次输入密码
41允许的最大会话数,10表示最多开启10个会话
43公钥认证,开启
47服务器识别公钥时,会匹配 .ssh/名为authorized_keys文件,然后将公钥发给客户端,因此我们需要把有关公钥的文件名字改为这个名字。
65是否允许支持基于口令的认证,是
69是否允许任何的密码认证,否
71是否支持kerberos(基于第三方的认证,如LDAP)认证的方式,默认为no
115是否开启DNS,是(关闭的话可以在连接服务端时更快一些)
113默认验证信息基于SFTP传输,如果在该段文字前加上“#”则不支持SFTP连接
注:
以上#开头的英文行,表示系统默认执行的,如果要修改建议不要删除原有文字,去掉#另写一行自己需要的配置则原默认的不再生效。

3、修改配置文件:

(1)17行修改端口号为2222后,登录的格式为ssh 192.168.112.132 2222(注意IP和端口号之间没有“:”是空格),命令如下,修改之后重启服务。让防火墙允许,回车显示成功(如果防火墙关闭就没必要写这些)。添加自定义端口到服务,之后回车没有错误,但如果提示 ValueError: Port tcp/4444 already defined 没关系,我们可以再换一个端口试试。
在这里插入图片描述
(2)38行配置不允许管理员登录的话,即使管理员输入正确的密码也无法登录,因此可以设定特定的用户可以登录。
(3)65行修改密码认证改为no,我们新建对话:此时就需要调用证书进行连接会话
在这里插入图片描述
(4)可以在配置文件中加入 AllowUsers A B C 一行,可以让特定的用户SSH登录,其他的用户无法登录。
其中,A、B、C表示为允许登录的账号,多个用户之间用空格隔开。

五、搭建SSH服务:

说明本次实验环境为VMware-workstation-full-14.0的两台虚拟机,服务端的名字是Server,客户端的名字是Client。加载的镜像文件是rhel-server-7.5-x86_64-dvd,且两台虚拟机之间均使用同一种网卡配置,本实验所采用的是网卡模式为NAT模式。

1、基于口令的SSH登录:

首先我们用Xshell分别连接两台虚拟机,一台模拟服务端,一台模拟客户端。
输入指令 ssh root@192.168.112.132 -p 22 ,之后输入服务端的密码,然后成功远程登录。如下:
在这里插入图片描述

2、两台虚拟机之间实现SSH互信,免登录:

该实验证明的是不通过口令登录即可实现远程连接。但由于对端要有本端的公钥,因此在传输的时候,我们是先用口令传输公钥给对端,对端收到后,再关闭基于口令的远程登录。最后再测试双方拿着对端的公钥,在用口令登录的方式没有的时候,看是否能实现登录。
(1)首先在任意一台虚拟机上创建密钥对:使用命令 ssh-keygen -t rsa
① ssh-keygen表示生成、管理和转换认证密钥,-t rsa指定算法类型为rsa。
②密钥所在位置为 /root/.ssh/ 中,密钥的文件名叫做 id_rsa
(2)输入密码,默认为空。由于我们直接基于钥匙来认证,这里直接回车,不设置密码。
(3)于上一步骤一致:回车。最后基于RSA算法随机生成长度为2048的密钥图片。
在这里插入图片描述
(4)此时我们使用命令:ll /root/.ssh/ 查看到存放密钥的目录,发现有两把钥匙,公钥和私钥。
在这里插入图片描述
(5)然后我们将公钥发给另一台虚拟机Client,使用命令: scp /root/.ssh/id_rsa.pub root@192.168.112.129:/root/.ssh/authorized_keys 将该公钥文件发送到另一台虚拟机的指定目录,并取名为 authorized_keys 这是由于配置文件只识别该文件作为公钥文件。如果原来的文件名不改,则会提示权限被拒绝。
之后它会提示无法确定主机的真实性,问你是否需要继续连接。我们输入yes后,它会要求输入对端口令,我们输入后便成功将公钥给了另一台虚拟机。
(6)我们修改配置文件 vim /etc/ssh/sshd_config ,将65行的yes改为no:PasswordAuthentication no。最后我们检测直接登录对端,发现没有输入口令,直接登录进去。
在这里插入图片描述
(7)以上就实现了SSH单方面信任,然后我们回头看,会在.ssh/下又多了一个文件,该文件记录了与谁之间的信任,如果删除该文件,还需要重新进行连接。只要对端有自己的公钥就没有关系,输入yes后,继续连接也可以,并没有输入密码。除此之外,还要说明的是这里只将Server的公钥给了Client,但是Client并没有把公钥给Server,因此Server能免密登录Client,而Client不能实现免密登录Server。要实现互信,双方都需要有对方的公钥,这里不再做演示。
在这里插入图片描述

3、通过Xshell使用证书进行登录:

本次实验与之前实验无关,如果不想恢复快照,请删除/root/.ssh下的所有文件,该实验仅需要一台虚拟机即可。思路与之前一致,先打开密码认证并传输私钥至windows,然后关闭密码认证,使用私钥证书进行登录。
(1)首先保证虚拟机上开启基于密码的认证: vim /etc/ssh/sshd_config
65行:PasswordAuthentication yes
(2)紧接着创建密钥对:使用命令: ssh-keygen -t rsa -b 4096 指定类型为rsa,指定大小为4096。然后回车回车。
在这里插入图片描述
(3)创建密钥对好后,我们使用命令将公钥文件名进行重命名为服务可识别的公钥名字。
在这里插入图片描述
(4)切换到/root/.ssh目录 点击Xshell文件传输图标,双击私钥文件id_rsa,此时文件已被传输至windows桌面。紧接着我们关闭密码登录,重启服务后准备检测。
在这里插入图片描述
(5)检测:我们新建一个对话窗口,然后点击浏览,选择文件为私钥文件,最后点击确认。我们便成功发现已经登录进来。
在这里插入图片描述
但是我们发现传输私钥是一种很不安全的行为,对此xshell将私钥通过加密算法为公钥,这样使得密钥传输变得更安全。
点击工具,然后用户密钥管理者。
在这里插入图片描述
然后导入选中密钥文件,紧接着点击生成公钥。
在这里插入图片描述
选择公钥类型为rsa类型,长度自己选。然后下一步。
在这里插入图片描述
在这里插入图片描述
密码跳过,我们就不再设置了。
在这里插入图片描述
在这里插入图片描述
看到以下画面时,说明该私钥文件转换为的公钥文件已经好了。
在这里插入图片描述
之后再把这个文件移动到虚拟机里面,同样命名为authorized_keys。当下次需要登录时,我们将证书文件选择为刚才生成的id_rsa_1024这个密钥(注意点击浏览后选择用户密钥,不是文件。这里已经基于私钥文件生成了一个公钥)确认,便成功登录。


http://chatgpt.dhexx.cn/article/EjB0Qjxg.shtml

相关文章

Linux基础——SSH远程连接

简介 1.Ssh 是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。 2.OpenSSH 是实现SSH软件的开源软件项目 结构 C/S结构:客户机和服务器结构,是软件体系结构。 B/S结构:浏览器和服务器结构&…

windows 通过ssh连接到Linux主机

windows 通过ssh连接到Linux主机 文章目录 windows 通过ssh连接到Linux主机1.ssh的认识2.ssh的安全验证3.连接方法4.windows 通过ssh连接到Linux主机 1.ssh的认识 SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性…

Linux配置SSH连接方式

1. SSH介绍 1) 什么是SSH SSH是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全 2)SSH服务端和客户端 SSH服务端是一个守护进程,一遍为sshd进程,在后端运行并响应来自客户端的请求。…

Linux----SSH远程连接服务

一、SSH介绍 1、SSH介绍 SSH是一个应用层协议 实现Linux的远程加密连接 适用于Linux服务器远程管理 Telnet 远程连接、不加密 适用于局域网网络设备的远程连接 2、管理Linux服务器的方式 本地管理 安装系统、故障修复 远程管理(使用频率较高) 3…

如何通过ssh远程连接自己的主机(Linux)?

1.查看自己的网卡是否工作正常 可以看到,有多块网卡在工作,其中eno1是有线网卡,UP表示开启了,但没有运行(RUNNING),因为此时主机并没有连接有线网络。 lo是本地虚拟网卡,所有设备都…

通过SSH连接到Linux服务器

目录 前提: 一、通过账号密码方式进行ssh连接 二、通过免密方式进行ssh连接(公、私钥校验) 三、通过第三方工具(XShell)免密方式进行ssh连接 前提: 传统的网络服务程序,如ftp,p…

Linux服务器的SSH连接使用

本文已同步至个人博客: liaosis blog----Linux服务器的SSH连接使用 一.什么是SSH? 简单说,SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,…

【SpringBoot】| 邮箱发送验证码,你会了吗?

目录 🦁 题外话🦁 提前准备2.1 配置邮箱第三方登录2.1.1 点击设置——账户2.1.2 开启POP3/SMTP服务 2.2 添加依赖2.3 yaml配置 🦁 进入主题🦁 测试使用🦁 尾声3.1 安利一个生成验证码的工具类3.1.1 添加依赖3.1.2 编写…

发送验证码倒计时效果实现

目录 前言一、应用场景二、代码演示三、 效果演示总结 前言 今天用vueuse/core中提供的一个方法,实现发送验证码时倒计时的一个效果。这样的场景使我们经常会见到的,一起来看一下如何实现 一、应用场景 用户选择手机号和验证码登录的时候,往…

阿里云短信服务——短信发送验证码

引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了;现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送;下面我以阿里云为例,演示一下如何短信发送验证码&#xff1b…

实战总结:邮箱发送验证码

java邮箱发送验证码 目前项目中需要同时支持短信和邮箱验证,短信用的是腾讯云就不多说了,在此分享一下邮箱验证码发送。 首先,作为发送邮箱,需要开启POP3/SMTP/IMAP,登录邮箱–设置–账户–开启POP3/SMTP/IMAP&#x…

SpringBoot整合邮箱发送验证码

1、以QQ邮箱为例&#xff0c;点开设置开启POP3/SMTP服务 2、创建一个springboot项目 1&#xff09;引入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependen…

Vue3发送验证码-防止页面刷新-发送验证码状态改变

效果: 1.页面DOM <div v-show"state.sendAuthCode" click"getCode">发送验证码</div> <div v-show"!state.sendAuthCode" ><span class"auth_text_blue">{{state.second}} </span>s</div>2. 业务…

C#实现手机发送验证码

目录 具体实现——封装一个类里&#xff0c;U层直接调用 配置文件的内容如下 验证手机号的正则表达式 首先先需要注册第三方网站&#xff0c;给大家推荐一个网站互亿无线&#xff0c;注册了之后每个用户可以免费发送50条短信。 下面以C#实现手机发送验证码为例。基本思路是本地…

uniapp 发送验证码倒计时

实现原理&#xff0c;点击发送验证码按钮&#xff0c;开始倒计时效果 准备工作 &#xff1a;在data中定义变量 ​​​​​​​ 点击事件 let timerId setInterval(() > {this.countDown--;this.sendText this.countDown "秒后重试";if (this.countDown < 0)…

html给手机号发送验证码,js如何实现手机发送验证码功能

js如何实现手机发送验证码功能 发布时间:2021-06-21 12:24:46 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关js如何实现手机发送验证码功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 效果图: 代码如下:html&g…

Python发送验证码短信

Python发送验证码短信 前提条件相关介绍实验环境发送验证码短信账户注册查看用户名查看密码主要步骤代码实现输出结果 前提条件 熟悉Python基本语法 相关介绍 Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被…

html如何发送验证码到手机,页面效果,给手机发送验证码

html>定时发送验证码 var wait 5; function send(o) { if(wait5){ //向服务器发送请求&#xff0c;给手机发送验证码 // $.post("/simple/user/sendCode/mobile", // { // "mobile" : "${user.mobile}", // "number" : 2 // }, …

实现发送验证码功能

// 需求一&#xff1a;发送验证码// 用户点击之后&#xff0c;显示05秒后重新获取// 时间到了&#xff0c;自动改为重新获取let code document.querySelector(.code)code.addEventListener(click, function () {this.innerHTML 05秒后重新获取let mark 5let time setInterva…

发送验证码倒计时

点击发送验证码按钮的时候 会调用ajax请求发送验证码 但是 如果没有设置倒计时 如果一直重复点击按钮的话 会一直请求发送验证码 所以我们要设置一个验证码倒计时 <input id"sendCodeId" type"button" class"btn btn-danger" click"sen…