使用 RSA 密钥进行 SSH 连接

news2024/9/28 5:22:59

使用 RSA 密钥进行 SSH 连接

平时用 SSH 连树莓派和虚拟机每次都要输入密码,比较烦人。Windows Terminal 出于安全原因是不支持记录密码进行自动连接的功能的,所以还是老老实实创建 RSA 密钥进行连接好了。

生成 RSA 密钥对

Windows 上可以用 Putty Key Generator 这个工具生成 RSA 密钥对:

image-20230803200747567

点击菜单 key->Generate key pair

在打开的页面点击 Generate 按钮生成密钥对,等待一会后就可以生成一对 RSA 密钥。

image-20230803205627775

RSA 密钥对本质上是两个用 RSA 算法生成的字符串,将对应的字符串保存起来就是密钥文件,可以用于身份验证。

理论上只要保存私钥(private key)就可以了,因为私钥是可以生成公钥的。但方便起见我们最好还是将私钥和公钥都保存起来。

点击 Save public key 将公钥保存到本地文件,可以用 .pub 作为文件后缀以表示这是 RSA 公钥。

点击 Save private key 将私钥保存到本地文件,文件以 .ppk 作为后缀进行保存。

保存私钥的时候会提示是否在没有设置密码的情况下保存,如果是用途比较敏感的私钥,可以额外添加密码来保护私钥,这样可以防止私钥丢失后被人恶意利用。

部分程序(比如 Windows Terminal)进行身份验证时使用的是 pem 私钥而非 ppk 私钥,所以最好转换一份 pem 私钥进行保存。

ppk 私钥转换成 pem 私钥很容易,通过 Conversions->Export OpenSSH Key 菜单即可,选择一个目录进行保存,文件后缀名使用 .pem

服务器公钥添加

为了能让服务器验证我们的私钥,需要将其对应的公钥保存到 Linux 服务器。

在需要用密钥进行登录的用户目录下创建一个 .ssh 目录:

[icexmoon@192 ~]$ mkdir .ssh

~/.ssh 目录创建一个文件 authorized_keys,并将刚生成的公钥内容写入:

[icexmoon@192 ~]$ cd .ssh
[icexmoon@192 .ssh]$ vim authorized_keys

写入的公钥内容是ssh-rsa xxxxx,这里的xxxxx指代实际的公钥内容。

注意ssh-rsa后边有一个空格。

SSH 客户端设置

还需要修改 SSH 客户端的设置,让其在连接目标服务器时使用私钥进行验证。

具体的设置方式因 SSH 客户端的不同而不同,我这里使用的是 WindowsTerminal。

Windows 系产品进行 SSH 连接时都用同样的设置方式,比如 VSCode 也同样如此。

打开C盘用户目录下的 .ssh 目录,比如我这里是 C:\Users\70748\.ssh

里边有一个 config 文件,打开并编辑(如果没有就创建)。

config 文件的格式如下:

Host 192.168.1.1
  HostName 192.168.1.1
  User root
  Port 22
  ForwardAgent yes
  IdentityFile "C:\Users\70748\.ssh\test.pem"

没太多好说的,应该很容易看懂,这里的 IdentityFile 就是用于登录验证的私钥文件。

The End,谢谢阅读。

参考资料

  • ppk如何转为pem
  • [LINUX使用RSA 密钥登录](https://blog.csdn.net/qq_35493807/article/details/125005919#:~:text=LINUX使用RSA 密钥登录 1 1、生成密钥( 公钥 与私钥); 2,2、放置公钥 (Public Key)到服务器~%2F. ssh %2Fauthorized_key文件中; 3 3、配置ssh客户端使用密钥登录。)
  • 配置RSA密钥使用ssh协议登录远程服务器

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

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

相关文章

leetcode17. 电话号码的字母组合(java)

电话号码的字母组合 leetcode17. 电话号码的字母组合题目描述回溯算法代码演示 回溯算法 leetcode17. 电话号码的字母组合 难度 中等 leetcode17 跳转链接 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数…

基于遗传算法的试题组卷(二)

实例讲解 一、准备工作 1、问题实体 问题实体包含编号、类型(类型即题型,分为五种:单选,多选,判断,填空,问答, 分别用1、2、3、4、5表示)、分数、难度系数、知识点。一…

前端Vue入门-day08-vant组件库

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 vant 组件库 安装 导入 全部导入 按需导入 浏览器配饰 Viewport 布局 Rem 布局适配 vant 组件库 …

九耶|阁瑞钛伦特:产品经理面试题—产品经理在工作中是如何划分需求优先级的?

产品经理在工作中划分需求优先级是为了指导产品团队的开发和发布流程。以下是产品经理在划分需求优先级时通常考虑的因素: 业务目标:产品经理会与企业领导层或业务方合作,了解公司的战略目标和销售策略。然后,他们会根据这些目标评…

【数据分享】1901-2022年1km分辨率的逐年平均气温栅格数据(免费获取)

气温数据是我们最常用的气象指标之一,之前我们给大家分享过1901-2022年1km分辨率逐月平均气温栅格数据,该数据来源于国家青藏高原科学数据中心,数据持续更新,最新数据为2022年的数据!很多小伙伴拿到数据后还咨询我们有…

Docker-Compose编排与部署(lnmp实例)

第四阶段 时 间:2023年8月3日 参加人:全班人员 内 容: Docker-Compose编排与部署 目录 一、Docker Compose (一)概述 (二)Compose适用于所有环境: (三&#xf…

数据结构基础4:带头指针双向。

一.基本概念: 一.基本结构: 1.逻辑结构: 二.结构体的基本组成。 和单链表非常大的区别就是函数不需要传二级指针,因为头不存有效数据。头节点不需要改变。 二.功能接口的实现 0.创建一个新的节点 //创建新的节点ListNode* buy…

【C++】BSTree 模拟笔记

文章目录 概念插入和删除非递归实现中的问题递归中的引用简化相关OJ复习直达 概念 由下面二叉搜索树的性质可以知道,中序遍历它便可以得到一个升序序列,查找效率高,小于往左找,大于往右走。最多查找高度次,走到到空&am…

黑马头条 各种踩坑合集 从0到1 欢迎留言提问

《黑马头条》SpringBootSpringCloud Nacos等企业级微服务架构项目_黑马头条项目_软工菜鸡的博客-CSDN博客 Day01 用他的 centos镜像 自动集成了 nacos 所有的配置 大部分都要改mysql密码啥的; 启动他的项目,有些时候要启动 redis 容器;镜像里…

超详细|ChatGPT论文润色教程

本文讲述使用中科大开源ChatGPT论文辅助工具,对论文进行润色 祝看到本教程的小伙伴们都完成论文,顺利毕业。 可以加QQ群交流,一群: 123589938 第一章 介绍 今天给大家分享一款非常不错的ChatGPT论文辅助工具,使用了专…

谁是全球最小ARM MCU?

先是从百度上查找的,找了半天,也找到了一部分。 大小基本在一二毫米左右,外设有多有少,但是好多都买不到货。 而且有些特别小众,开发环境压根没接触过。 然后去外面找了一下,竟然有好几个提到了HC32L110&am…

Ubuntu20.04安装踩坑记录---千万不要随便使用sudo rm -rf命令!!!

趁着从服务器下载之前备份内容的这段时间,写一下这阶段安装系统和配置深度学习环境的踩坑路程。作为一周之内重装7次系统的我是懂得怎么把系统搞崩溃的,这不必须记录一下!!! 系统 ubuntu20.04 硬件 dell…

(树) 剑指 Offer 33. 二叉搜索树的后序遍历序列 ——【Leetcode每日一题】

❓剑指 Offer 33. 二叉搜索树的后序遍历序列 难度:中等 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1…

调用feign返回错误的数据

bug描述&#xff1a; 在一个请求方法中会调用到feign去获取其他的数据。 List<Demo> list aaaFeignApi.getData(personSelectGetParam);在调用的时候&#xff0c;打断点到feign的地方&#xff0c;数据是存在的&#xff0c;并且有15条。但是返回到上面代码的时候数据就…

0139 数据链路层1

目录 3.数据链路层 3.1数据链路层的功能 3.2组帧 3.3差错控制 3.4流量控制与可靠传输机制 3.5介质访问控制 部分习题 3.数据链路层 3.1数据链路层的功能 3.2组帧 3.3差错控制 3.4流量控制与可靠传输机制 3.5介质访问控制 部分习题 1.数据链路层协议的功能不包括&…

webpack基础知识二:说说webpack的构建流程?

一、运行流程 webpack 的运行流程是一个串行的过程&#xff0c;它的工作流程就是将各个插件串联起来 在运行过程中会广播事件&#xff0c;插件只需要监听它所关心的事件&#xff0c;就能加入到这条webpack机制中&#xff0c;去改变webpack的运作&#xff0c;使得整个系统扩展…

[C++项目] Boost文档 站内搜索引擎(3): 建立文档及其关键字的正排 倒排索引、jieba库的安装与使用...

之前的两篇文章: 第一篇文章介绍了本项目的背景, 获取了Boost库文档 &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…第二篇文章 分析实现了parser模块. 此模块的作用是 对所有文档html文件, 进行清理并汇总 &#x1fae6;[C项目] …

【JS】浏览器不同窗口、标签页或 iframe之间的通讯 - 技术的尽头是魔术

效果 左上↖地址: http://127.0.0.1:5500/index.html 左下↙地址: http://127.0.0.1:5500/index.html?hidden 右上↗地址: http://127.0.0.1:5500/index.html?hidden 右下↘地址: http://127.0.0.1:5500/index.html?hidden index.html <!DOCTYPE html> <html>…

【antd之tabs踩坑篇】Tabs有items时切换不起作用

<TabsdefaultActiveKey"1"tabPosition{mode}style{{ height: 220 }}items{new Array(30).fill(null).map((_, i) > {const id String(i);return {label: Tab-${id},key: id,disabled: i 28,children: Content of tab ${id},};})}/>官网上如果tabs有很多it…

jmeter使用:解决压测时获取token问题

在执行压测过程中&#xff0c;首先要执行登录接口来获取token。如果并发数比较大只需要一个用户的登录token&#xff0c;可以使用setup线程组。如果是模拟多个用户登录获取token&#xff0c;需要使用仅一次控制器。 一、添加setup thread group前置线程 1.在并发量比较高的情况…