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

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...