当前位置: 首页 > news >正文

ssh设置:免密登入、修改默认端口、禁止root登入、限制错误登入次数

服务器:

客户端:

 在下面不再说明服务器和客户端。

1.修改ssh默认端口

是在服务器中设置。

该设置涉及三部分:sshd配置文件修改/增加新端口、Selinux添加新端口、Firewall开放新端口。

vim /etc/ssh/sshd.config,找到#Port行, 默认Port策略是22号,取消注释就可以修改端口值,也可以保留22号端口,再添加一行写其他端口。添加的端口号建议在10000-65535之间,防止和系统端口冲突。例如,我们保留端口22号的同时添加32222端口。如果需要将22端口修改为32222,只需要将22端口注释即可。

 当修改完之后需要重启服务:systemctl restart sshd
查看sshd的状态:发现错误信息,端口32222是没有许可的

原因是:Selinux并不知道ssh的端口出现了改变, 可以使用semanage工具对Selinux进行设置。
查询系统是否有该工具,如果没有安装则进行安装。

查看当前端口,可以使用ss(等于netstat),我们使用semanage port -l命令

那我们将ssh的新端口添加进去

 此时还未生效,我们需要重启sshd服务使得新端口生效。

以修改之后的端口进行远程登入,如果没有指定用户名,则表示使用与当前本地用户相同的用户名登录远程服务器servera。

出现错误,no route to host,原因是:防火墙的对应端口32222没打开
防火墙端口查看和设置如下

 上述,就完成了添加一个ssh端口登入的操作:

如果,我们仅仅想修改掉默认端口22为32222,那我们在/etc/ssh/sshd.config配置文件中删除22端口这一行即可。并且重启,可以看到sshd进程只运行在新端口上了。

现在只能新端口登入了,默认端口已经不能登入。

防火墙和Selinux去掉加入的端口:


2.禁止root登入和限制密码试错的最大次数

是在服务器中设置。

修改/etc/ssh/sshd.config文件中的以下位置
OpenSSH服务器使用/etc/ssh/sshd_config配置文件中的PermitRootLoain配置设置,以允许或禁止用户以root身份登录系统。当PermitRootLogin参数设为yes时,这也是默认设置,用户被允许以root身份登录系统。要防止这种情况,可将该值设为no。或者,若要禁止基干密码的身份验证,但允许对root执行基于私钥的身份验证,可将PermitRootLogin参数设为without-password。
OpenSSH服务器使用/etc/ssh/sshd_config配置文件中的PasswordAuthentication参数,用于控制用户在登录系统时能否使用基于密码的身份验证。Password Authentication参数的默认值是yes,这会使SSH服务器允许用户在登录系统时使用基于密码的身份验证。PasswordAuthentication的值为no时禁止用户使用基于密码的身份验证。
请记住,每当您更改/etc/ssh/sshd_config文件时,都必须重新加载sshd服务让更改生效,即systemctl reload sshd。
请记住,如果您为ssh关闭基于密码的身份验证,则需要有一种办法来确保用户在远程服务器上的
~/.ssh/authorized_keys文件中填充有公钥,以便可以登录。


 3.免密登入

客户端ssh登入服务器的形式一般来说是交互式的,需要输入密码;这对于脚本执行很不友好。有时候脚本执行需要免密直接登入不同的服务器,那么免密设置就非常有必要了。

客户端root用户目录中的/root/.ssh文件夹,在无任何ssh远程登入服务器的时候是空的。使用ssh登入服务器,就会提示连接后会将服务器的指纹永久的加入known_hosts文件中。因此我们从该文件就可以看出,客户端曾连过多少台服务器。并且我们可以知道,这种方式登入,不管登入几次都是需要交互式的输入服务器账号对应的密码登入。

客户端中known_hosts文件的公钥信息来自于服务器中/etc/ssh/ssh_host_*.pub文件。例如上面公钥信息ecdsa加密方式,那么对应的就是服务器的ssh_host_ecdsa_key.pub文件,如下图

 

基于密钥的身份,甚至免密登入:

/etc/ssh/目录下面的密钥对,是系统自动生成提供给客户端登入的。/root/.ssh/目录下面的密钥对是用户自己手动生成的,目的是为了基于密钥的身份,甚至免密登入。

客户端执行密钥生成命令:ssh-keygen -t rsa,我们选择默认的存储位置,可以选择密钥的密码(也可以不设置直接回车),生成rsa加密方式的密钥对,默认保存在/root/.ssh/文件夹中,公钥文件以pub结尾。

首先查看服务器用户目录下面的.ssh文件夹,可以看到文件夹内没有authorized文件

我们在客户端中执行命令:ssh-copy-id root@servera
在可以使用基于密钥的身份验证之前,需要将公钥复制到服务器(目标系统)上。ssh-copy-id命令可将 SSH密钥对的公钥复制到目标系统。如果在运行ssh-copy-id时省略了公钥文件的路径,它会使用默认的/home/user/.ssh/id_rsa.pub文件。这里我们是省略了指定公钥文件的路径。

这个时候我们就可以基于密钥的身份登入服务器ssh servera,我们还是需要交互式的输入自己创建密钥对时设置的密码。注意,这里发生了本质区别,以前登入需要输入服务器端的用户密码,密码由服务器拥有者可以随意改动;现在登入需要输入的是客户端拥有者的密钥密码,由自己控制。
将公钥成功传输到远程系统后,我们可以使用对应的私钥对远程系统进行身份验证,同时通过SSH登录远程系统。如果在运行ssh命令时省略了私钥文件的路径,它会使用默认的/home/user/.ssh/id_rsa文件。这里我们省略了指定私钥文件的路径。

如果我们要达到真正的免密(免客户端自己的密钥密码)有两种方式:
方式一,创建密钥对的时候不设置密钥密码,这样在登入的时候也不会出现交互式的让我们输入密钥密码。但是有安全问题,在这种情况下,任何拥有您私钼文件的人都可以使用它进行服务器的身份验证,如果您设置了密码,则在使用私钥进行身份验证时需要输入此密语。
方式二,已经设置了密钥密码,通常必须输入密语才能使用私钥进行身份验证。但是,我们可以使用名为ssh-agent的程序临时将密语缓存到内存中。之后,当我们使用SSH通过私钥登录另一个系统时,ssh-agent会自动为我们提供密码。这样做不仅方便,而且能减少他人“肩窥”您密码输入的机会,从而提高安全性。

方式二具体操作
运行eval $(ssh-agent)命令,将启动ssh-agent并自动为该shell会话设置这些环境变量。此外,它还显示ssh-agent进程的PID。
一旦ssh-agent开始运行,我们需要告诉它私钥密语或密钥。运行ssh-add命令会添加分别来自/home/user/.ssh/id_rsa(默认)文件的私钥。。如果我们使用的是默认文件之外的私钥文件,必须将-i 选项用于ssh命令来指定私钥文件的路径。
当我们注销启动了ssh-agent的会话时,将退出进程,并且您的私钥密语也将从内存中清除。

相关文章:

ssh设置:免密登入、修改默认端口、禁止root登入、限制错误登入次数

服务器: 客户端: 在下面不再说明服务器和客户端。 1.修改ssh默认端口 是在服务器中设置。 该设置涉及三部分:sshd配置文件修改/增加新端口、Selinux添加新端口、Firewall开放新端口。 vim /etc/ssh/sshd.config,找到#Port行&…...

【Fastdfs】| 入门连续剧——安装

作者:狮子也疯狂 专栏:《spring开发》 坚持做好每一步,幸运之神自然会降临在你的身上 目录一. 🦁 前言Ⅰ. 🐇 为什么要使用分布式文件系统?1.1 单机系统 vs 独立文件服务器1.2 分布式文件系统1.3 FastDFS引…...

【ESP32-S3】Pycharm 使用 microPython 教程(避坑)

一、下载Pycharm等操作 1.百度云下载链接 链接:https://pan.baidu.com/s/1tkbMzS5B_v-Cn4WQlTqS3Q?pwd0108 提取码:0108 2.安装 按照压缩包中的教程来,你懂的。 二、配置microPython环境 1.安装 microPython 插件 1.1 File > Sett…...

Allegro如何通过报表的方式检查单板上是否有假器件操作指导

Allegro如何通过报表的方式检查单板上是否有假器件操作指导 在做PCB设计的时候,输出生产文件之前,必须保证PCB上不能存在假器件,如下图,是不被允许的 当PCB单板比较大,如何通过报表的方式检查是否存在假器件,具体操作如下 点击Tools点击Reports...

清理bib文件(删除重复项,仅保留tex中引用的条目)

在写latex文件的过程中,经常会遇到添加了一堆文献的bibtex到bib文件中,有时候文章一长同一篇文献用不同的cite-key引用了多次,同时也会有一些文献最后并没被正文引用,这就需要对bib文件进行清理。 删除重复项 可以用JabRef 在J…...

Rust编程细节知识点拾遗

1.Rust中每一个引用都有生命周期,也就是引用保持有效的作用域。生命周期主要目标是避免悬垂引用,悬垂引用就是引用了已经释放的值。函数中,x的生命周期不能小于返回值得生命周期。当有x和y的时候,两者的生命周期是两个里面较小的那…...

【Linux】线程池

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…...

运动版蓝牙耳机什么牌子的好、运动款蓝牙耳机推荐

何以解忧?唯有运动。事实已经无数次证明,运动不但可以让你更瘦身、更紧实,更重要的是精神状态也能焕然一新。不知道各位是不是也跟我一样,喜欢在运动的时候听着音乐。但是听音乐就需要有好的续航,否则运动一半没电了&a…...

MySQL中自带的数据库表相关介绍

mysql的自带数据库表主要有以下几个: (1)information_schema (2)performance_schema (3)mysql (4)sys (5)可能存在空数据库test 一、informa…...

【微信小程序】--注册小程序账号(一)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…...

Java多线程 - 利用Callable或CompletableFuture实现多线程异步任务执行

文章目录1. Callable接口源码2. Future接口的源码3. RunnableFuture接口和FutureTask实现类4. 利用线程池和Callable接口实现异步执行任务5. 利用CompleteFutable实现多线程异步任务执行1. Callable接口源码 FunctionalInterface public interface Callable<V> {// 这个…...

【ts + webpack】贪吃蛇小游戏

目录 一、项目搭建 1.1 初始化项目 二、项目界面布局 三、完成Food类 四、完成记分牌类 五、初步完成snake类 六、创建游戏控制器类 - 键盘事件 七、GameControl - 使蛇移动 八、蛇撞墙和吃食检测 一、项目搭建 1.1 初始化项目 1.使用init命令生成package.json文件 …...

传统巨头生“变”,中国毫米波雷达市场战火再升级

进入2023年&#xff0c;中国车载毫米波雷达市场战火明显升级。 一方面&#xff0c;愈演愈烈的份额抢夺战不仅仅存在于几大传统巨头之间&#xff0c;也快速转移到与国产供应商之间&#xff1b;随着部分外资巨头的本土化战略深入落地&#xff0c;同时对国产供应商造成了压力。 …...

26岁曾月薪15K,现已失业3个月,我依然没有拿到offer......

我做测试5年&#xff0c;一线城市薪水拿到15K&#xff0c;中间还修了一个专升本&#xff0c;这个年限不说资深肯定也是配得上经验丰富的。今年行情不好人尽皆知&#xff0c;但我还是对我的薪水不是很满意&#xff0c;于是打算出去面试&#xff0c;希望可以搏一个高薪。 但真到面…...

华为OD机试 - 打印文件 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

【前端】浏览器的渲染流程(完整)

本文主要包含以下内容&#xff1a;浏览器渲染整体流程解析 HTML样式计算布局分层生成绘制指令分块光栅化绘制常见面试题浏览器渲染整体流程浏览器&#xff0c;作为用户浏览网页最基本的一个入口&#xff0c;我们似乎认为在地址栏输入 URL 后网页自动就出来了。殊不知在用户输入…...

华为OD机试 - 有效子字符串 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

抽象类和接口

抽象类和接口 抽象类和接口的定义 抽象类主要用来抽取子类的通用特性&#xff0c;作为子类的模板&#xff0c;它不能被实例化&#xff0c;只能被用作为子类的超类。 接口是抽象方法的集合&#xff0c;声明了一系列的方法操作&#xff0c;如果一个类实现了某个接口&#xff0c;…...

STM32DSP库汇总

前言 本文仅对stm32的DSP库进行汇总&#xff0c;具体函数使用方式持续更新…… 分类函数名描述 BasicMathFunctions 基础数学函数 abs绝对值add加法dot_prod向量点积mult乘法negate相反数offset 偏置 scale比例缩放shift移位sub减法 ComplexMathFunctions 复数数学函数 conj…...

C++类和对象----思想基础应用

类与对象的思想&基础应用一、类声明1.1、封装类的意义1.1.1、在设计类的时候&#xff0c;属性和行为写在一起&#xff0c;表现事物1.1.2、成员权限1.2、struct和class区别1.3、成员属性设置为私有二、对象的初始化和清理2.1、构造函数&析构函数2.2、构造函数分类方法一…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中&#xff0c;要设置一个操作在指定延迟后&#xff08;例如3秒&#xff09;执行&#xff0c;可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法&#xff0c;它接受两个参数&#xff1a; 要执行的函数&…...

Unity-ECS详解

今天我们来了解Unity最先进的技术——ECS架构&#xff08;EntityComponentSystem&#xff09;。 Unity官方下有源码&#xff0c;我们下载源码后来学习。 ECS 与OOP&#xff08;Object-Oriented Programming&#xff09;对应&#xff0c;ECS是一种完全不同的编程范式与数据架构…...

SDU棋界精灵——硬件程序ESP32实现opus编码

一、 ​​音频处理框架​ 该项目基于Espressif的音频处理框架构建,核心组件包括 ESP-ADF 和 ESP-SR,以下是完整的音频处理框架实现细节: 1.核心组件 (1) 音频前端处理 (AFE - Audio Front-End) ​​main/components/audio_pipeline/afe_processor.c​​功能​​: 声学回声…...