Linux系统中ssh远程登录协议

目录

一、SSH协议概述

二、SSH协议工作原理

三、ssh服务与配置文件

3.1、openssh

 3.2、ssh命令

3.3、服务端配置

四、基于密钥验证的免交互登录

4.1、客户端生成密钥

4.2、将公钥拷贝至服务器

4.3、验证免密登录


一、SSH协议概述

SSH(Secure Shell)是一种加密的网络协议,广泛用于远程登录、远程命令执行和数据传输,具有高度的安全性。

SSH 协议通常运行在TCP 22端口上,允许用户通过命令行界面(CLI)连接到远程计算机。它通过加密技术提供认证、加密通信、数据完整性验证和保护,从而确保通信的安全性。

二、SSH协议工作原理

  •  密钥交换:ssh协议使用对称加密公钥加密结合的方式进行通信,客户端与服务器通过密钥交换协议安全地交换密钥。
  • 连接建立:客户端发起连接请求,服务器响应并协商加密算法。
  • 身份验证:
    • 密码验证:客户端提供密码,服务器验证密码地正确性。
    • 密钥验证:通过上图中公钥与私钥配对进行身份验证。服务器保存客户端的公钥,客户端通过加密算法生成签名,服务器用保存的公钥验证签名,确认客户端身份。
  • 加密通信:身份验证成功后,客户端与服务器间的所有通信和数据传输,都会通过加密通道进行传输,保障数据的安全。

三、ssh服务与配置文件

3.1、openssh

在CentOS7中默认安装了openssh相关的软件包,sshd服务作为守护进程,监听客户端的ssh连接请求。

  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh_config
 3.2、ssh命令

语法格式:ssh 参数 域名或IP地址

-p设置远端服务器上的端口号-l设置登录用户名
-t进行跳板连接-o设置配置参数

参考示例:

[root@localhost ~]# ssh 192.168.153.223
The authenticity of host '192.168.153.223 (192.168.153.223)' can't be established.
ECDSA key fingerprint is SHA256:vaEdVp3wv8zsRpAgVT2OrDSw6PcGMfetQ65uzt9Vwgo.
ECDSA key fingerprint is MD5:7b:f9:4a:12:87:fb:ef:12:b7:b8:c8:3e:81:71:2b:f7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.153.223' (ECDSA) to the list of known hosts.
root@192.168.153.223's password: 
Last login: Tue Feb 25 21:01:24 2025 from 192.168.153.1
[root@localhost ~]# ssh 192.168.91.101 ifconfig    //还可衔接命令使用
3.3、服务端配置
[root@ky15-1 ~]# vim /etc/ssh/sshd_config 
17  Port    22   
//ssh协议默认22端口,生产环境建议修改ListenAddress ip
//监听地址设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。LoginGraceTime 2m
//用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒PermitRootLogin yes 
//默认 ubuntu不允许root远程ssh登录StrictModes yes   
//检查.ssh/文件的所有者,权限等MaxAuthTries 
//用来设置最大失败尝试登陆次数为6MaxSessions  10         
//同一个连接最大会话
PubkeyAuthentication yes     
//基于key验证PermitEmptyPasswords no      
//密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。PasswordAuthentication yes   
//基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10 
//单位:秒
ClientAliveCountMax 3 
//默认3
UseDNS yes 
//提高速度可改为no   内网改为no  禁用反向解析
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups    #未认证连接最大值,默认值10
Banner /path/file
//以下可以限制可登录用户的办法:白名单  黑名单
AllowUsers user1 user2 user3@ip(限制主机)
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2

四、基于密钥验证的免交互登录

4.1、客户端生成密钥
[root@localhost ~]# ssh-keygen        //通过ssh-keygen命令生成密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    //指定密钥保存路径
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):                 //设置密钥的密码
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:JOcopg5QMvdl2H0M4mHwZ7tQtm4HzZ/RA9w+BSbz2w0 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|    ..+ .   o o  |
|     * + o . * . |
|o o . B O o o E .|
| = . o @ *   + =.|
|.   + o S o . * o|
|.  o . o o . o o |
|. .     + . o    |
| o     . .       |
|  .              |
+----[SHA256]-----+
[root@localhost ~]# ls /root/.ssh        //密钥生成
id_rsa  id_rsa.pub                      
4.2、将公钥拷贝至服务器
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub 192.168.153.23
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host '192.168.153.23 (192.168.153.23)' can't be established.
ECDSA key fingerprint is SHA256:ImW98bPgqIlxXQjUtQethpgpBSotG8KqEKOAOqVcWg0.
ECDSA key fingerprint is MD5:71:8f:21:16:23:ba:9a:c4:ea:1d:d2:f7:f7:57:92:cd.
Are you sure you want to continue connecting (yes/no)? yes        //同意继续连接
/usr/bin/ssh-copy-id: INFO: attempting to log 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 install the new keys
root@192.168.153.23's password:                 //输入目标服务器密码Number of key(s) added: 1                       //传输完成Now try logging into the machine, with:   "ssh '192.168.153.23'"
and check to make sure that only the key(s) you wanted were added.[root@localhost .ssh]# ls
id_rsa  id_rsa.pub  known_hosts        
4.3、验证免密登录

若想实现两台服务器互相免密登录,需两台服务器互相拷贝公钥。

[root@localhost .ssh]# ssh 192.168.153.23        //免密登录完成
Last login: Tue Feb 25 21:01:29 2025 from 192.168.153.1
[root@localhost ~]# 

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

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

相关文章

vue2 ruoyi websocket轮询

文章目录 前言一、websocket和心跳是什么?二、使用步骤1.2.监听变化3.关闭 总结 前言 websocket,实现与后端通讯,使用心跳机制,断联自动恢复。 一、websocket和心跳是什么? WebSocket WebSocket 是一种网络通信协议&a…

LangChain大模型应用开发:LangGraph快速构建Agent工作流应用

介绍 大家好,博主又来给大家分享知识了。今天给大家分享的内容是使用LangChain进行大规模应用开发中的LangGraph快速构建Agent工作流应用。 通过对前几次对LangChain的技术分享。我们知道LangChain作为一个强大的工具集,为开发者们提供了丰富的资源和便…

学习FreeRTOS推荐几篇质量高的文章

学习FreeRTOS是一个非常好的选择,因为它是一个广泛使用的实时操作系统(RTOS),特别适合嵌入式系统开发。以下是一些高质量的文章和视频资源,帮助你入门和深入学习FreeRTOS: 文章推荐 FreeRTOS官方文档 链接…

深入理解Redis:数据类型、事务机制及其应用场景

在当今快速发展的技术领域中,Redis作为一种高性能的内存数据库,已经被广泛应用于各种场景,从简单的缓存实现到复杂的数据处理任务。其灵活性和高效性主要来源于对多种数据结构的支持以及强大的功能特性,如事务处理、持久化选项、高…

k8s集群3主5从高可用架构(kubeadm方式安装k8s)

关键步骤说明 环境准备阶段 系统更新:所有节点执行yum/apt update确保软件包最新时间同步:通过ntpdate time.windows.com或部署NTP服务器网络规划:明确划分Service网段(默认10.96.0.0/12)和Pod网段(如Flann…

Dify部署无法拉取镜像

Dify部署无法摘取镜像 sudo docker compose up -d [] Running 10/10✘ nginx Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiti... 15.2s✘ we…

科技快讯 | L3自动驾驶之风吹向全球 2025年或成商业化关键;DeepSeek商标遭恶意抢注

消息称AMD拟以40亿美元出售数据中心工厂,部分台企成潜在买家 2月24日,彭博社报道,AMD正与包括台湾广达电子、英业达、和硕联合以及纬创资通在内的亚洲企业谈判,出售其去年收购的数据中心制造工厂,总价值可能在30-40亿美…

06C语言——指针

一、指针入门 (1)、准备知识 0、图解: 1、内存地址 字节:字节是内存的容量单位,英文称为 byte,一个字节有8位,即 1byte(0000 0000 --- 1111 1111) 8bits(0 --- 1) 地址:系统为了便于区分每一个字节而对…

Python爬虫selenium验证-中文识别点选+图片验证码案例

1.获取图片 import re import time import ddddocr import requests from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support.wait import WebDriverWait from …

OpenCV(6):图像边缘检测

图像边缘检测是计算机视觉和图像处理中的一项基本任务,它用于识别图像中亮度变化明显的区域,这些区域通常对应于物体的边界。是 OpenCV 中常用的边缘检测函数及其说明: 函数算法说明适用场景cv2.Canny()Canny 边缘检测多阶段算法,检测效果较…

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况:本科就读于电科软院,24年2月开始了解考研,24年3月开始数学,9月决定考本院(开始全天候图书馆学习)并开始专业课学习,11月底开始政治学习,最后…

go基础语法

go基础语法 先下载安装go,然后到vscode下载go插件 1. 基础 输入输出 package main import "fmt" func main(){a:1var b2 var c int //不给初始值得标出变量类型 c3var d stringfmt.Scanf("%s",&d) //接收用户输入fmt.Printf("Hell…

硬件基础(3):三极管(1):理论基础

目录 一、背景 二、定义 三、分类 四、工作原理 NPN三极管工作原理 基本工作原理 电流放大倍数(增益) 输入特性 1. 输入特性的基本概念 2. 输入特性曲线的形态 3. 输入特性曲线的具体分析 输出特性 1. 输出特性图的基本概念 2. 输出特性曲…

Git最佳实践指南(Windows/Linux双系统详解)

Git最佳实践指南:从入门到熟练(Windows/Linux双系统详解) 一、环境搭建与基础配置(适用Windows/Linux) 1.1 Git安装与验证 # Windows系统安装(推荐Chocolatey包管理) # 直接下载git二进制文件…

吃一堑长一智

工作中经历,有感触记录下 故事一 以前在一家公司时,自己是一名开发人员,遇到问题请教领导解决方案,当时领导给了建议,后来上线后出问题了,背了锅。心里想的是领导说这样做的呀,为什么出问题还…

联想 SR590 服务器 530-8i RAID 控制器更换损坏的硬盘

坏了的硬盘会自动亮黄灯。用一个空的新盘来替换,新盘最好不要有东西。但是有东西可能也没啥,因为我看 RAID 控制器里有格式化的选项 1. 从 IPMI 把服务器关机,电源键进入绿色闪烁状态 2. 断电,推开塑料滑块拉出支架,…

前端浏览器开发中的浏览器兼容问题【持续更新】

目录 一、什么是浏览器兼容问题 二、JavaScript兼容问题及解决方案 2.1addEventListener与attachEvent的区别 2.2集合类对象问题 2.3自定义属性问题 2.4event.x与event.y问题 2.5window.location.href问题 2.6事件委托方法 三、CSS兼容问题及解决方案 3.1浏览器CSS样式初…

【c语言】字符函数和字符串函数(1)

一、字符分类函数 c语言中有部分函数是专门做字符分类的,也就是一个字符是属于什么类型的字符,这些函 数的使用要包含一个头文件ctype.h中。 其具体如下图所示: 这些函数的使用方式都类似,下面我们通过一个函数来看其…

LeetCodehot 力扣热题100 全排列

这段代码的目的是计算给定整数数组的所有全排列(permutations),并返回一个包含所有排列的二维数组。 思路解析 在这段代码中,采用了 深度优先搜索(DFS) 和 回溯 的方法来生成所有的排列。 关键步骤&#xf…

【Qt源码】窥视信号槽实现机制

为了便于通过调试进源码探究下Qt信号槽实现原理,这里简单写一段代码如下所示。 1.自定义信号槽连接 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QObject::connect(ui->pushButton,&QPu…