当前位置: 首页 > 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、构造函数分类方法一…...

React 第五十四节 Router中useRevalidator的使用详解及案例分析

前言 useRevalidator 是 React Router v6.4 引入的一个强大钩子&#xff0c;用于在数据路由&#xff08;Data Router&#xff09;中手动触发路由数据的重新验证&#xff08;revalidation&#xff09;。 它在需要主动刷新数据而不改变路由位置的场景中非常有用。 一、useReval…...

ios版本的Tiktok二次安装不上,提示:Unable to Install “TikTok”

问题&#xff1a;Domain: IXUserPresentableErrorDomain Code: 1 Recovery Suggestion: Failed to load Info.plist from bundle at path /private/var/containers/Bundle/Application/E99D86D4-F96E-48F9-86C5-FE095A22E13A/DouyinDev.app/PlugIns/AwemeNotificationService.a…...

人工智能-Chain of Thought Prompting(思维链提示,简称CoT)

Chain of Thought Prompting&#xff08;思维链提示&#xff0c;简称CoT&#xff09; 是一种通过引导大模型生成中间推理步骤来增强其复杂问题解决能力的技术。它让模型在回答问题时&#xff0c;不仅输出最终答案&#xff0c;还展示出逐步分解问题、逻辑推理的过程。以下是大模…...

深度学习题目1

梯度下降法的正确步骤是什么&#xff1f; a.计算预测值和真实值之间的误差 b.重复迭代&#xff0c;直至得到网络权重的最佳值 c.把输入传入网络&#xff0c;得到输出值 d.用随机值初始化权重和偏差 e.对每一个产生误差的神经元&#xff0c;调整相应的&#xff08;权重&#xff…...

PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第二部分)

这是关于该主题的第二部分。如果你还没有阅读第一部分&#xff0c;请先阅读&#xff0c;以便理解“绕组规则”的问题。 快速回顾一下&#xff1a;HTML5 只支持 Non-Zero&#xff08;非零&#xff09;绕组规则&#xff0c;而 PDF 同时支持 Non-Zero 和 Even-Odd&#xff08;奇偶…...

AtCoder-abc408_b 解析

题目链接 让我们一步一步详细分析这个问题&#xff1a; 题目要求我们实现去重并排序的功能&#xff0c;这在C中可以直接使用set容器来实现。set是STL中的一个关联容器&#xff0c;具有以下特性&#xff1a; 自动去重&#xff1a;所有元素都是唯一的自动排序&#xff1a;默认…...

汽车加气站操作工证考试重点

汽车加气站操作工证考试重点 一、汽车加气站操作工证考试主要内容 汽车加气站操作工证是从事CNG&#xff08;压缩天然气&#xff09;和LNG&#xff08;液化天然气&#xff09;加气站作业人员的必备资格证书。随着新能源汽车的快速发展&#xff0c;该证书的市场需求持续增长&a…...

贪心算法应用:集合划分问题详解

贪心算法与集合划分问题详解 集合划分问题是组合优化中的经典问题&#xff0c;其核心目标是将元素集合划分为若干满足特定条件的子集。本文将深入探讨贪心算法在集合划分中的应用&#xff0c;涵盖算法原理、适用场景、Java实现细节及优化策略。 一、集合划分问题定义 1.1 基础…...

【 java 基础知识 第一篇 】

目录 1.概念 1.1.java的特定有哪些&#xff1f; 1.2.java有哪些优势哪些劣势&#xff1f; 1.3.java为什么可以跨平台&#xff1f; 1.4JVM,JDK,JRE它们有什么区别&#xff1f; 1.5.编译型语言与解释型语言的区别&#xff1f; 2.数据类型 2.1.long与int类型可以互转吗&…...

SQL 中 JOIN 的执行顺序优化指南

SQL 中 JOIN 的执行顺序优化指南 一、JOIN 执行顺序基础原理 在 SQL 查询中,JOIN的执行顺序是查询优化的重要环节。数据库引擎会根据多种因素决定最优的 JOIN 顺序: 逻辑执行顺序:SQL 语句的书写顺序(如 FROM → WHERE → GROUP BY)并不代表实际执行顺序物理执行顺序:由查…...