使用ssh-key免密登录服务器或免密连接git代码仓库网站
ssh登录服务器场景
假设有两台机器,分别是:
源机器:主机A(hostA),ip:198.168.0.1
目标机器:主机B(hostB),ip:192.168.0.2
ssh-key免密连接原理
源机器想要使用ssh-key免密连接到目标机器,就要先了解ssh-key免密连接的原理(见下图)。

ssh-key免密连接前提
理解了上面的原理图,剩下要做的,无非就是两件事:
(一)在源机器创建ssh-key密钥对
(二)将ssh-key中的公钥写入到目标机器的授权密钥文件里
在源机器创建ssh-key密钥对
第(一)件事很简单:要在源机器(即主机A,ip:192.168.0.1)生成ssh-key密钥对,可以通过ssh-keygen指令(windows机器可以使用git客户端的git-bash.exe)。
# 执行 ssh-keygen --help 可以看到生成ssh-key的可选加密算法类型encryprType有:[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa],其中rsa是默认的加密算法。
# 推荐使用ed25519加密算法,比默认的rsa算法更快更安全,生成的密钥内容也更短。
ssh-keygen -t ed25519# 执行上面指令后,第一步会提示生成的私钥文件的默认路径(即~/.ssh/id_{encryptionType},默认保存到当前用户的.ssh目录(即~/.ssh/))(如有需要可自行修改路径或文件名),第二第三步是二次确认访问该ssh-key的密码,一般都留空直接回车。

三次回车后,可以在当前用户home目录的.ssh文件夹(即~/.ssh/)找到该ssh-key密钥对:id_ed25519 和 id_ed25519.pub。其中带.pub后缀的为公钥,不带.pub后缀的为私钥。这两个文件的内容都是文本,可以编辑和查看。
将ssh-key中的公钥写入到目标机器的授权密钥文件里
第(二)件事也很简单:要完成目标机器(即主机B,ip:192.168.0.2)对源机器(即主机A,ip:192.168.0.1)的ssh-key授权,有两种方式:
方式1、在主机A通过ssh-copy-id指令将本机的公钥文本内容写入到主机B的授权密钥文件里
# 如果主机B的ssh端口是默认的22端口,也可以省去- p 22。如果是要登录主机B的非root用户,则修改为目标用户的用户名。这种方式需要输入目标用户的登录密码。
ssh-copy-id [-p 22] root@192.168.0.2
#输入主机B用户的登录密码后,执行成功则可以在主机B的目标用户home目录的.ssh文件夹(即~/.ssh/)的authorized_keys文件(即授权密钥文件)看到成功追加了主机A的ssh-key公钥(即id_ed25519.pub)的文本内容。
方式2、可以跳过ssh-copy-id指令,直接登录主机B的目标用户,编辑目标用户的授权密钥文件(即~/.ssh/authorized_keys,没有该文件则需用touch指令先创建该文件),把主机A的ssh-key公钥(即id_ed25519.pub)的文本内容追加进来。
ssh-key免密登录目标机器
上述两个前提完成了,就可以在源机器(即主机A,ip:192.168.0.1)执行ssh指令通过ssh-key免密登录到目标机器(即主机B,ip:192.168.0.2)。
ssh [-p 22] root@192.168.0.2


如果想在源机器上使用ssh工具(比如XShell、WindTerm、MonaXterm等)通过ssh-key免密登录到目标机器呢?
打开ssh工具,填写目标机器(即主机B,ip:192.168.0.2)的ip、端口、用户名,然后输入登录密码的界面通常都会有另一个选项或选项卡,一般叫做“public key”或“ssh key”之类的。点击该选项或选项卡会要求选择密钥文件或身份文件,选择ssh-key私钥(即id_ed25519文件)然后就可以免密登录了。
ssh-key免密连接git站
现在常用的git代码仓库网站(简称git站)有:gitee、coding、github、gitlab、bitbucket等。
在git站注册了账号后,可以进入账号设置里面添加ssh-key,从而实现你本地机器免密clone、pull、push你在该git网站的仓库(即项目代码)。这个功能利用的就是ssh-key免密连接原理。
git站的这个功能和使用ssh-key免密登录服务器就仅仅是第(二)步的操作方式不同而已:
都是采用的方式2,只不过源机器的ssh-key公钥(即id_ed25519.pub)文本内容不是直接写入到目标机器的目标用户的授权密钥文件里,而是粘贴到git站的账号设置里的ssh-key配置项。
相关文章:
使用ssh-key免密登录服务器或免密连接git代码仓库网站
ssh登录服务器场景 假设有两台机器,分别是: 源机器:主机A(hostA),ip:198.168.0.1 目标机器:主机B(hostB),ip:192.168.0.2 ssh-key免…...
自由学习记录(19)
unity核心也算是看完了吧,但觉得的确是少了点东西,之后再看mvc框架,和网络开发,,感觉有必要想想主次顺序了,毕竟在明年的3月之前尽量让自己更有贴合需求的能力 先了解一些相关概念,不用看懂&am…...
Elasticsearch中时间字段格式用法详解
Elasticsearch中时间字段格式用法详解 攻城狮Jozz关注IP属地: 北京 2024.03.18 16:27:51字数 758阅读 2,571 Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful搜索引擎。它提供了全文搜索、结构化搜索以及分析等功能,广泛…...
蓝桥杯-网络安全比赛题目-遗漏的压缩包
小蓝同学给你发来了他自己开发的网站链接, 他说他故意留下了一个压缩包文件,里面有网站的源代码, 他想考验一下你的网络安全技能。 (点击“下发赛题”后,你将得到一个http链接。如果该链接自动跳转到https,…...
ES海量数据插入如何优化性能?
2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …...
遥控救生圈,水上应急救援的新革命_鼎跃安全
水上事故发生后,时间就是生命。每一秒钟的延误,都可能增加溺水者失去生命的风险。传统的救援方式往往依赖人工迅速反应,但在大规模的紧急事件中,人工救援速度难以满足需求。而遥控救生圈的出现改变了这一切,它的作用在…...
【flask开启进程,前端内容图片化并转pdf-会议签到补充】
flask开启进程,前端内容图片化并转pdf-会议签到补充 flask及flask-socketio开启threading页面内容转图片转pdf流程前端主js代码内容转图片-browser端browser端的同步编程flask的主要功能route,def 总结 用到了pdf,来回数据转发和合成,担心flask卡顿,响应差,于是刚好看到threadi…...
Docker在CentOS上的安装与配置
前言 随着云计算和微服务架构的兴起,Docker作为一种轻量级的容器技术,已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南,帮助他们在CentOS系统上安装和配置Docker及相关组件,如Docker Compose和私有…...
【笔记】开关电源变压器设计 - 工作磁通的选择原则
变压器设计中有一个重要的输入参数,是选定电路工作的磁路参数。涉及到磁场的上下震荡最高幅度。如上图所示。磁场的方向有正负,所以如果电流在越过零点震荡,只考虑半周来和Bs或者Bmax比对即可。Bs,Bmax与特定材料有关。材料给出的最大Bmax,或…...
【VScode】如何在VSCode中配置Python开发环境:从零开始的完整指南
文章目录 前言软件准备软件安装1. 安装Python2. 检查Python是否安装成功3. 安装第三方包4. 安装VSCode 配置VSCode1. 安装Python插件2. 创建项目,配置工作区域3. 编写Python文件4. 配置Python编译设置5. 使用代码格式化工具yapf 更多文章结尾 前言 在当今的编程世界…...
Copy From 勇哥的机器视觉实验项目
形成一种有规划的学习模式,节省时间提升效率。 (一) 单相机标定 (1)halcon的标定助手 这个助手是常用工具,要注意的主要问题是 "品质问题","标定的精度"。 使用的标定板有两种类型,多种材质。选择时要配合灯光来选择材质。 例如玻璃标定板只适合背…...
在IDEA中使用Git
一、准备工作 这里我们使用 Gitee 做例子,使用 SSH 协议。看这个文章前最好看一下《》这个文章,了解一下 SSH。 1、生成秘钥对 首先要到 ~/.ssh 目录下进行操作,因为生成的公钥和私钥一般放在这个目录下,Windows 就是在用户目…...
分布式锁(防止同时操作同一条数据)实现分析
1. deleteLocked 方法: public R deleteLocked(String id, String username) {String examReportUserKey "examReportId_" id "_" username;stringRedisTemplate.delete(examReportUserKey);return R.ok(); } 功能:删除指定用户…...
【已解决,含泪总结】Ubuntu18.04下非root用户Anaconda3卸载重装,conda install终于不再报错
为什么要卸载重装 因为我最初安装的Anaconda3的版本是5.2.0,适合python3.6.5,其下的conda版本是4.5.4 我一开始本着能用则用,毕竟不是很懂的原则,尽量不要卸掉重来 但。。。bug像滚雪球一样,越来越多 conda install指…...
大语言模型(LLM)量化基础知识(一)
请大家关注我的知乎博客:- 派神 - - 知乎 随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件(加速器内存)增长速度之间的差距越来越大,如下图所示: 上图显示,从 2017 年到 2022 年,语言模…...
hadoop面试题
一、单项选择题 1、目前,Hadoop的最高版本是哪个( A ) A、Hadoop3.x B、Hadoop2.x C、Hadoop4.x D、Hadoop1.x 2、大数据的4V特征是指? ( B ) A、数据量大(Volume)、类型繁多(Variety)、价值密度低(Va…...
mysql 安装 windows
新版安装 新版本安装 如果出现initializing database无法安装 则用我当前版本传送门 如MySQL 安装时没有developer default 选项 解决方法传送门 如果上述还不行 可以选择full 汉化下载 传送门...
24下软考中级网络工程师考前必背22页
数据中心选址原则 1、地理位置:备选址地点发生自然灾害的概率和频率、环境危害因素以及气候因素 2、电力能源供应:可用性、成本因素 3、通讯基础设施:光纤主干线路及其距数据中心选址的距离、光纤类型、服务运营商的类型及其支持的服务模式…...
Java类和对象(下篇)
今天接着学习类和对象(苦笑)(苦笑)(苦笑) 1. 封装 1.1 封装的概念 面向对象程序三大特性:封装、继承、多态。 而类和对象阶段,主要研究的就是封装特性。 何为封装呢?简单来说就是套壳屏蔽细节。 举例:对于计算机使用者而言&am…...
k8s图形化显示(KRM)
在master节点 kubectl get po -n kube-system 这个命令会列出 kube-system 命名空间中的所有 Pod 的状态和相关信息,比如名称、状态、重启次数等。 systemctl status kubelet #查看kubelet状态 yum install git #下载git命令 git clone https://gitee.com/duk…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
