ssh远程访问及控制

目录

一、ssh协议简介

1、实现远程访问的协议和程序

2、ssh协议的概念及功能

3、ssh协议的工作原理

3.1 对称加密与非对称加密

3.1.1 对称加密(Symmetric Encryption)

3.1.2 非对称加密(Asymmetric Encryption)

3.2 公钥传输的原理

3.3 加密通讯的原理

二、openSSH程序

1、openSSH程序及配置文件

2、ssh命令基本用法

2.1 直接远程连接

2.2 连接指定用户 

2.3 指定端口号

2.4 跳板登录

2.5 远程执行命令操作

 3、黑白名单

3.1 黑名单

3.2 白名单

 4、禁止root用户登录

 5、ssh服务器的最佳调优

三、使用密钥对免交互验证登录

1、创建密钥

2、将密钥文件传送到远程服务端

3、 登录验证

4、免交互登录(无须密钥密码验证)


一、ssh协议简介

1、实现远程访问的协议和程序

协议:

  • SSH(Secure Shell):SSH是一种加密网络协议,用于通过安全通道在不安全网络上进行远程访问和管理。它提供了加密的通信会话,包括远程登录和执行命令,以及传输文件等功能
  • Telnet:虽然不安全,但仍然被用于远程登录到服务器或设备,通常用于简单的文本交互
  • RDP(Remote Desktop Protocol):主要用于Windows系统,允许用户通过图形界面远程访问另一台计算机。
  • VNC(Virtual Network Computing):允许用户远程控制另一台计算机的图形界面。它是跨平台的远程桌面协议。
  • X11:用于在UNIX和Linux系统上进行图形界面的远程访问。
  • ICA(Independent Computing Architecture):由Citrix Systems开发,用于提供应用程序和桌面虚拟化服务

程序:

  • OpenSSH:OpenSSH 是 SSH 协议的免费开源实现,包括服务器端和客户端程序。它支持加密和身份验证功能,被广泛用于Linux和类Unix系统上

  • PuTTY:PuTTY 是一个流行的免费的SSH和Telnet客户端程序,可在Windows平台上使用。它提供了SSH连接所需的工具和功能

  • WinSCP:WinSCP 是一个免费的SFTP、SCP和FTP客户端程序,用于在Windows平台上与远程计算机进行安全文件传输。它支持SSH协议,提供了用户友好的界面

  • SecureCRT:SecureCRT 是一个商业化的SSH客户端程序,提供了强大的功能和定制选项,适用于Windows、Mac和Linux操作系统

接下来主要详细介绍ssh协议和OpenSSH程序

2、ssh协议的概念及功能

SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地进行远程访问和管理。它通过加密数据传输,防止信息被窃听或篡改

功能:

  • 加密通信:SSH协议通过加密技术,确保通信过程中的数据传输是安全的,防止数据被窃听或篡改
  • 远程登录:用户可以使用SSH协议远程登录到其他计算机或服务器,以便进行命令行操作、文件管理等任务
  • 加密身份验证:SSH协议支持使用公钥和私钥对进行身份验证,这种方式比传统的基于密码的身份验证更加安全
  • 端口转发:SSH协议支持端口转发,可以通过安全的通道在两个计算机之间建立安全的连接
  • 远程执行命令:SSH允许用户在远程主机上执行命令,这对于自动化脚本和远程管理非常有用
  • 文件传输:SSH协议还支持安全的文件传输,可以在客户端和服务器之间进行安全的文件传输和管理

3、ssh协议的工作原理

3.1 对称加密与非对称加密

3.1.1 对称加密(Symmetric Encryption)
  • 概念:在对称加密中,加密和解密使用相同的密钥。发送方使用密钥将消息加密,接收方使用相同的密钥将消息解密。常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)和3DES等

  • 优点:对称加密算法加密和解密速度快,适合大量数据的加密和解密操作

  • 缺点:密钥的安全分发是对称加密的一个挑战,因为发送方和接收方都需要共享相同的密钥。如果密钥在传输过程中被截获,那么加密的安全性就会受到威胁

3.1.2 非对称加密(Asymmetric Encryption)
  • 概念:在非对称加密中,加密和解密使用不同的密钥,分别称为公钥和私钥。公钥用于加密,私钥用于解密。常见的非对称加密算法包括RSA、Diffie-Hellman和ECC(椭圆曲线加密)等

  • 优点:非对称加密算法解决了密钥分发的问题,因为公钥可以公开发布,而私钥则只有接收方知道

  • 缺点:非对称加密算法的加密和解密速度比对称加密算法慢,因此不适合大规模数据的加密和解密操作

区别对称加密非对称加密
密钥数量使用相同的密钥进行加密和解密使用不同的密钥进行加密和解密
速度较快较慢
密钥分发需要解决密钥分发的问题通过公钥和私钥的方式解决了密钥分发的问题
安全性较低更高

3.2 公钥传输的原理

SSH协议中的公钥传输原理通常涉及到公钥认证和密钥交换

详细阐释:

① 客户端向服务端发起连接请求

② 服务端接收到请求后,返回自己的公钥以及一个会话id(此处客户端得到服务端的公钥)

③ 客户端生成密钥对,客户端用自己的公钥异或会话id,计算出一个值res,并用服务端的公钥加密

④客户端发送加密值到服务端,服务端用私钥解密,得到res

⑥ 服务端用解密后的值res异或会话id,计算出客户端的公钥(此处服务端得到客户端公钥)

⑦ 最终:双方各自持有三个密钥,分别为自己的一对公钥、私钥,以及对方的公钥,之后所有的通讯都会被加密

3.3 加密通讯的原理

详细阐释:

首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

二、openSSH程序

1、openSSH程序及配置文件

openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统

执行“systemctl start sshd”命令即可启动sshd服务,默认端口使用的22端口

sshd:服务名称

/usr/sbin/sshd  :服务端主程序

/etc/ssh/sshd_config:服务端配置文件,设置与服务端相关的应用可通过此文件实现

/etc/ssh/ssh_config:客户端配置文件,设置与客户端相关的应用可通过此文件实现

~/.ssh/known_hosts:客户端用来存储已知服务端公钥信息的文件

①当SSH客户端连接到一个新的服务端时,它会检查这个服务端的公钥是否在~/.ssh/known_hosts 文件中。如果公钥在这个文件中,则说明这个服务端是可信的,SSH 客户端会继续连接并进行认证;如果公钥不在这个文件中,则 SSH 客户端会给出一个警告,提示用户这个服务端可能不是可信的,并询问用户是否继续连接

②如果客户端之前已经连接过这个服务端,那么它就会在 ~/.ssh/known_hosts 文件中找到这个服务端的公钥,并使用它进行加密通信。(再次连接时,可通过对比文件中的公钥来确定连接的服务器是否正确)。如果客户端之前没有连接过这个服务端,那么它就会将这个服务端的公钥添加到 ~/.ssh/known_hosts 文件中,以便下次连接时使用

注:

如果服务端的公钥发生了变化,比如重新安装了操作系统或者更换了硬件,那么客户端会提示服务端的公钥发生了变化,并询问用户是否继续连接。这是因为公钥的变化可能意味着服务端的身份已经被篡改,因此需要用户确认服务端的身份。(解决方法:将之前的密钥文件删除,重新连接新的服务端,生成新的密钥文件)

2、ssh命令基本用法

用于建立安全的远程连接

2.1 直接远程连接

ssh   IP地址

2.2 连接指定用户 

ssh   用户名@IP地址
ssh   -l   用户名  IP地址

2.3 指定端口号

ssh    ip地址     -p    端口号

首先可在服务端的/etc/ssh/sshd_config配置文件修改端口号

systemctl restart sshd     #重启sshd服务,修改的配置才能生效

那在客户端远程连接服务端时,可通过-p选项来指定服务端的端口号才能登录

2.4 跳板登录

SSH跳板登录(SSH jump host)是一种通过一个中间主机(跳板主机)来访问其他无法直接访问的目标主机的方法。它提供了一种安全的方式来管理和连接到位于内部网络中的主机,同时限制了对内部网络的直接访问

使用SSH命令从本地计算机连接到跳板主机,再通过跳板主机连接到目标主机

ssh  -t  跳板机ip地址  ssh  -t  跳板机ip地址    ........  ssh  -t  目的机ip地址  
#在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
[root@localhost .ssh]#iptables -A INPUT -s 172.16.12.10 -j REJECT 
[root@localhost ~]#ssh -t 172.16.12.12  ssh 172.16.12.13

2.5 远程执行命令操作

SSH服务可以通过远程执行命令的方式进行远程操作。通过在ssh命令后直接跟上要执行的命令,可以在远程主机上执行该命令而无需登录到远程主机的shell中

 ssh   ip地址    想使用的命令

 3、黑白名单

SSH的黑白名单通常指的是用于限制SSH连接的IP地址列表,以便控制哪些IP地址可以连接到SSH服务器(黑名单)或者哪些IP地址不允许连接到SSH服务器(白名单)

3.1 黑名单

黑名单是一种限制访问的方式,其中列出的IP地址被禁止连接到SSH服务器,而不在黑名单的IP地址允许连接到SSH服务器

设置黑名单:

①通常由系统管理员在SSH服务器的配置文件中定义。在OpenSSH中,这通常是在/etc/ssh/sshd_config文件中进行配置

②可以使用DenyUsersDenyGroups选项来指定禁止连接的用户或用户组

3.2 白名单

白名单是一种允许访问的方式,其中列出的IP地址被允许连接到SSH服务器。只有在白名单中列出的IP地址才能建立SSH连接,其他IP地址将被拒绝

设置白名单:

①通常由系统管理员在SSH服务器的配置文件中定义。在OpenSSH中,这通常是在/etc/ssh/sshd_config文件中进行配置

②可以使用AllowUsersAllowGroups选项来指定允许连接的用户或用户组

在172.16.12.12服务器上配置:允许所有主机连接本机的mimi用户,却只允许172.16.12.10主机连接本机的dh用户,修改完之后重启sshd服务

 只允许172.16.12.10客户端连接服务端的dh用户

 允许所有主机连接本机的mimi用户

 4、禁止远程连接到服务器的root用户

修改服务端配置:禁止root用户登录,再重启sshd服务

 5、ssh服务器的最佳调优

①建议使用非默认端口

vim /etc/ssh/sshd_config
#找到以下两个配置项:
port  123       #设置特定的ssh服务端口号

②禁止使用protocol version 1

因为SSH协议版本一存在多个已知的安全漏洞,其使用的加密算法和密钥交换机制相对较弱,易受到中间人攻击等威胁

SSH 协议版本二已经成为现代标准,并且得到广泛支持,绝大多数 SSH 客户端和服务器都默认使用协议版本二,而且很多安全性工具也不再支持协议版本一

③限制可登录用户的白名单

详细操作可参考上面的黑白名单

④设定空闲会话超时时长

vim /etc/ssh/sshd_config
#找到以下两个配置项:
ClientAliveInterval 0
ClientAliveCountMax 3

ClientAliveInterval:表示服务器向客户端发送空闲会话确认消息的时间间隔,单位为秒。默认值为0,表示不发送确认消息。将其设置为一个正整数,表示每隔多长时间向客户端发送一次确认消息。

ClientAliveCountMax:表示服务器向客户端发送确认消息后,客户端没有响应的最大次数。默认值为3,表示如果服务器连续发送3次确认消息后,客户端仍未响应,则认为客户端已经断开连接。将其设置为一个正整数,表示服务器最多发送多少次确认消息后,认为客户端已经断开连接

⑤利用防火墙设置ssh访问策略

#利用防火墙禁止特定IP地址:172.16.12.10访问
iptables -A INPUT -s 172.16.12.10 -j REJECT 

⑥仅监听特定的IP地址

vim /etc/ssh/sshd_config
#找到以下三个配置项:
ClientAliveInterval 300
ClientAliveCountMax 2
ListenAddress 172.16.12.10

ClientAliveInterval:表示SSH服务器将向客户端发送空闲会话检查的时间间隔(以秒为单位),默认值为0,表示禁用此功能

ClientAliveCountMax:表示SSH服务器将向客户端发送空闲会话检查的最大次数,如果达到此次数后仍未收到客户端的响应,则会话将被终止,默认值为3

ListenAddress:监听特定的IP地址的SSH连接

⑦基于口令认证时,使用强密码策略

比如:tr  -cd  [a-zA-Z0-9]  < /dev/random  |  head -c 12 | xargs
#设定12位的随机密码

⑧使用基于密钥的认证

详细操作参考下面的使用密钥对免交互验证登录

⑨禁止使用空密码

vim /etc/ssh/sshd_config
#找到以下一个配置项:
PermitEmptyPasswords no    #禁止使用空密码

⑩禁止远程连接到服务器的root用户

详细操作参考上面的禁止远程连接到服务器的root用户

⑪限制ssh的访问频度和并发在线数

vim /etc/ssh/sshd_config
#找到以下一个配置项:
MaxStartups 10        #最多允许10个并发连接,如果超过这个数量,会拒绝新的连接

使用PAM模块:通过Pluggable Authentication Modules (PAM) 可以实现更复杂的控制,
例如限制用户的并发登录数 

使用防火墙:你也可以使用防火墙软件如iptables来限制从特定IP地址发起的并发SSH连接数

⑫经常分析、分离日志

独立sshd服务日志文件:默认sshd服务日志在/var/log/secure下,可通过rsyslog程序将sshd服务日志文件独立出来放到特定的文件夹中,方便查看和管理。
(具体操作请查看《Linux文件系统与日志分析》博客)

使用日志分析工具:可以使用工具如grepawksed等来分析SSH日志文件。这些工具可以帮助搜索特定的关键字、过滤信息、提取有用的数据等

设置日志轮转:为了避免日志文件过大,可以配置日志轮转。通过日志轮转,旧的日志文件会被重命名并压缩,同时创建新的日志文件。可以使用logrotate工具来实现日志轮转,并在其配置文件中指定SSH日志文件的处理方式(具体操作请查看《Linux文件系统与日志分析》博客) 

三、使用密钥对免交互验证登录

1、创建密钥

可指定算法类型:输入  ssh-keygen  -t  ed25519 (ecdsa)

[root@localhost ~]#ssh-keygen     #客户端创建密钥

2、将密钥文件传送到远程服务端

#客户端将密钥传送到远程服务端
[root@localhost ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.12.10

3、 登录验证

此时我们去登录服务端,会使用密钥文件进行验证,提高了安全性

为保障更安全,可开启密钥验证,关闭密码验证,如此只有密钥的客户端才可连接到远程服务端 

4、免交互登录(无须密钥密码验证)

客户端先输入 ssh-agent  bash 将这个命令交给 bash 去管理

再输入 ssh-add  是将用户的私钥添加到运行中的 ssh-agent 中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用

但重启客户端设备后就会失效,需要重新进行上述操作

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生物信息学导论-北大-马尔可夫模型

ref: https://www.coursera.org/learn/sheng-wu-xin-xi-xue/home 本文主要来自本课的讲义。 Markov Model markov链描述了一个在连续时间段的离散随机过程&#xff0c;其中从一个状态向其他状态&#xff08;包括自身&#xff09;的转换&#xff0c;是由一个概率分布&#xff…

RK3568驱动指南|驱动基础进阶篇-进阶8 内核运行ko文件总结

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

LED 显示屏租赁特点及发展趋势大分析

LED租赁屏&#xff08;LED screen rental)作为一款专门用于舞台演出&#xff0c;文艺活动现场的LED显示屏&#xff0c;正逐渐成为户外广告传媒载体的首选。它广泛应用于舞台租赁、歌舞活动晚会、各种发布会、展会、体育场、剧场、礼堂、报告厅、多功能厅、会议室、演绎厅、迪吧…

JavaScript 入门手册

准备好快速学习 JavaScript了吗&#xff1f; 如果是&#xff0c;那么你需要这份 JavaScript 小抄。它以清晰、简洁和初学者友好的方式介绍了 JavaScript 的基础知识。 将它作为提高 JavaScript 技能的参考或指南。 让我们深入学习。 什么是 JavaScript&#xff1f; JavaSc…

【开源】基于JAVA的用户画像活动推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

如何本地搭建WebDAV并结合cpolar制作可公网访问的个人私有云盘

文章目录 前言1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 安装cpolar内网穿透3.2 配置WebDav公网访问地址 4. 映射本地盘符访问 前言 在Windows上如何搭建WebDav&#xff0c;并且结合cpolar的内网穿透工具实现在公网访…

高性能、低功耗4口全速 USB1.1 HUB控制器DPU54 替代AU9254

DPU54是一款高性能、低功耗 4 口全速 USB1.1HUB 控制器&#xff0c;上行端口兼容全速 12MHz 模式&#xff0c;4 个下行端口兼容全速 12MHz、低速 1.5MHz 两种模式。 DPU54采用状态机单事务处理架构&#xff0c;而非单片机架构&#xff0c;多个事务缓冲区&#xff0c;这样减小了…

【蓝桥杯软件赛 零基础备赛20周】第8周——排序算法及应用

文章目录 1. 快速排序2. C STL sort()3. Python的sort()和sorted()4. Java的sort()5. 例题例1 排序的基本应用例2 排序的基本应用例3 自定义排序比较函数例4 结构体排序例5 结构体排序 6. 习题 在算法竞赛中&#xff0c;一般不需要自己写这些排序算法&#xff0c;而是直接使用库…

任务10:安装配置Java开发环境

任务描述 知识点&#xff1a; Java开发工具Maven配置 重 点&#xff1a; 安装配置Java开发工具 IDEA为IDEA配置自定义Maven&#xff08;国内源&#xff09; 内 容&#xff1a; 下载并配置JDK 1.8下载安装IDEA为IDEA配置自定义MavenWindows环境安装配置Hadoop 任务指导…

【电商API】商品采集快速上货的通道

从技术上讲&#xff0c;API是应用程序编程接口的首字母缩写&#xff0c;被认为是构建应用软件的一组协议。实际上&#xff0c;API 是让人们保持数字联系的大部分基础。 API 开发正在为正确利用它们的网站开辟新的途径——在某些情况下&#xff0c;还开辟了新的收入来源。他们正…

国外客户工厂还是贸易商,该怎么回答

在和客户沟通的时候&#xff0c;我们最常遇到也最头疼的问题就是客户询问我们是工厂还是贸易商的时候&#xff0c;我们该怎么回答呢&#xff1f;万一回答错误了客户不搭理我们了应该怎么办呢&#xff1f; 先来看看我们常用的回答方式&#xff0c;是不是有你常用的&#xff1f;…

《YOLO算法:基础+进阶+改进》报错解决 专栏答疑

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。《YOLO算法&#xff1a;基础进阶改进》专栏上线后&#xff0c;部分同学在学习过程中提出了一些问题&#xff0c;笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容&#xff0c;笔者特意推出了该篇…

数据库第一次作业

1.创建一个英雄表 create table t_hero ( id int primary key auto_increment, name varchar(10) unique not null, gender char(5) check (gender in (男,女)), grade char(5) default 5星, groups char(5) check (groups in (毁灭,巡猎,智识,存护,…

Eclipse的安装与使用

Eclipse的安装与使用 “工欲善其事&#xff0c;必先利其器”&#xff0c;高效的开发工具&#xff0c;不但能带来高体验的开发环境&#xff0c;还能带来高效的纠错与开发提示等功能&#xff0c;下面介绍一种Java常用的开发工具——Eclipse。 1.1 Eclipse的安装与启动 Eclipse的…

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令&#xff1a; 命令解释&#xff1a; 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像&#xff0c;另外&#xff0c;使 用Docke…

3.hadoop HA-QJM 安装

目录 概述实践一主两从解压配置文件hadoop-env.shcore-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlworkers分发环境变量 格式化启动 hdfs启动 yarn验证bug zookeeperHAcore-site.xml hdfs-site.xml改为配置分发执行验证 HA 结束 概述 环境&#xff1a;hadoop 3.3.6 jd…

springboot项目启动时横幅修改

正常情况下&#xff0c;springboot启动时的横幅&#xff08;banner&#xff09;长这样 自定义banner 在resource下创建banner.txt&#xff0c;写入想要修改的内容即可 程序无bugSpring Boot Version: ${spring-boot.version}// _ooOoo_ …

提振信心,夯实信任,可持续发展见增长

近日&#xff0c;品牌ESG研究咨询机构MKTforGOOD发布《2024中国ESG消费报告》。这是MKTforGOOD持续第三年监测中国新世代对可持续消费的态度。在这三年的特殊时光里&#xff0c;累计近6000名受访者与MKTforGOOD一起深思消费的意义&#xff0c;分享他们对于在日常的消费生活中看…

IOS高德地图SDK接入-Swift

申请key 这个要前往高德开发平台注册成为个人开发者然后在控制台创建一个应用&#xff1a; 高德开发平台 注册步骤就不写了&#xff0c;写一下创建应用的步骤&#xff1a; 1、点击应用管理——>我的应用 2、点击右上角的创建新应用 3、输入内容&#xff1a; 4、点击添加ke…

SQL语句错误this is incompatible with sql_mode=only_full_group_by解决方法

一、原理层面 这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题&#xff1a; mysql 5.7.5版本以上默认的sql配置是:sql_mode“ONLY_FULL_GROUP_BY”&#xff0c;这个配置严格执行了"SQL92标准"。 很多从5.6升级到5.7时&#xff0c;为了语法兼容&#xff0c;大部…