Ubuntu下如何管理多个ssh密钥
Ubuntu下如何管理多个ssh密钥
前言
我一直在逃避这个问题,误以为我能够单纯地用一个 ssh 走天下。
好吧,现实是我不得不管理多个 ssh 做,那就写个博客总结一下吧。
查阅后发现前人已经总结了不少,那我就结合之后,再发展一下吧,参考资料按照 markdown 的规范,放在文末。
Note:
- 笔者
Ubuntu
为24.04 LTS
目录
[toc]
如何生成并添加第一个密钥
-
ssh-keygen -t rsa -C "youremail@yourcompany.com"
然后一路回车,就会在
~/.ssh
下生成id_rsa
,id_rsa.pub
-
ssh-add ~/.ssh/id_rsa
将密钥
id_rsa
添加到ssh-agent
中。 -
ssh-add -l
可以通过该命令来确认私钥列表。
-
ssh-add -D
该命令可以清空私钥列表。
至于如何配置 gitee
和 github
等,则默认都会,这篇文章的重心在于如何管理多个 ssh 密钥。
生成并添加多个密钥
生成并添加多个密钥,我们就需要编辑 config
文件。
-
ssh-keygen -t rsa -C "username@address"
然后,它就会让你
Enter file in which to save the key
,以及有一个默认的路径。可以手动输入自己想要保存的路径(绝对路径)。
之后,会让你
Enter passphrase (empty for no passphrase)
,就是输入口令,空则无口令。这个口令,是用来加密你的私钥的,避免你的私钥泄漏后,任何人都能用这个私钥冒充你。确认一遍口令,
Enter same passphrase again
。接下来就会告诉你
identification
私钥被存在哪里,以及public key
公钥被存在哪里等等信息。 -
ssh-add ~/.ssh/your_identification
我们将其添加到
ssh-agent
中。 -
vim ~/.ssh/config
创建
ssh
的config
文件。# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/your_identification User You# github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/your_identification User You
Host: 取任意名字
HostName: 这个是真实的域名地址
IdentityFile:这里是identification
(私钥)的地址
PreferredAuthentications:配置登录时用什么权限认证
User:配置使用用户名-
PreferredAuthentications
-
keyboard-interactive
交互式认证方式,当 SSH 客户端尝试连接到服务器时,如果服务器配置为使用
keyboard-interactive
认证,服务器会向客户端发送一系列问题(通常是用户名和密码),客户端需要提供答案。 -
password
需要输入用户名和密码来连接服务器。
-
publickey
用户生成密钥对,将公钥配置在服务器上,连接服务器时,服务器会要求用户提供公钥对应的私钥来证明身份。
-
-
-
ssh -T git@[Host]
配置完成后,你就可以通过上面的命令来检验是否配置正确。
算力平台与服务器
通常,你只能获得服务器地址,用户名和密码。这种情况下,我们只能这样进行 config
文件的编辑,即不设置 IdentityFile
,PreferredAuthentications
设置 password
或者 keyboard-interactive
:
Host platform
HostName address
PreferredAuthentications keyboard-interactive
User You
连接gitee,但出现问题
你可能会看到类似这样的信息,如果你直接回车,就会告诉你 Host key verification failed
,然后就退出来,无法连接:
The authenticity of host 'gitee.com (180.76.198.77)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这是 SSH 客户端用来防止中间人攻击(MITM)的的措施,当你第一次连接到一个 SSH 服务器时,客户端会要求你确认服务器的密钥指纹是否与你已知的指纹匹配。如果指纹匹配,你可以确信你正在连接到正确的服务器。
也就是说,我们需要自己确认一下服务器的密钥指纹是否正确,如果正确,我们要进行添加才能避免这样的信息出现。
如果我们确认密钥指纹正确,我们就可以输入 yes
的选项,则会有下面的信息:
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
警告我们,已经永久把这个服务器的密钥指纹添加到已知指纹中了。
此后再连接 gitee.com
,就不会出现这样上面的问题了。
结合 vscode
使用
结合 vscode
使用很简单,下载对应的插件即可(如果前面你已经在相应文件下写了 config
文件的话)。
个人下载了下面的插件:
- Remote - SSH
- Remote - SSH: Editing Configuration Files
- Remote - Tunnels
- Remote Explorer
然后,不出意味的话,点击左边旁栏的 Remote Explorer
就可以看到先前已经配置好的远程服务器了。
参考资料
- git配置多个ssh key: https://www.cnblogs.com/acelin/p/15015719.html
- git配置多个SSH密钥: https://www.cnblogs.com/muzidaitou/p/13163407.html
- github/gitlab 管理多个ssh key: https://www.cnblogs.com/fanyong/p/3962455.html
相关文章:
Ubuntu下如何管理多个ssh密钥
Ubuntu下如何管理多个ssh密钥 前言 我一直在逃避这个问题,误以为我能够单纯地用一个 ssh 走天下。 好吧,现实是我不得不管理多个 ssh 做,那就写个博客总结一下吧。 查阅后发现前人已经总结了不少,那我就结合之后ÿ…...

[vulnhub] DarkHole: 1
https://www.vulnhub.com/entry/darkhole-1,724/ 端口扫描主机发现 探测存活主机,184是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 09:59 CST Nmap scan report for 192.168.75.1 Host is up (0.00027s latency). MA…...

商淘云连锁企业管理五大功能 收银系统助力门店进销存同步
连锁企业管理的五大功能相互协作,共同确保连锁门店能够高效运营、降低成本、提升客户满意度,并最终实现盈利目标。今天,商淘云分享连锁企业管理的五大功能: 1、进销存管理:进销存管理是连锁企业的基础功能之一…...

统信UOS开发环境支持Perl
UOS凭借广泛的编程语言支持,为开发者构建了一个高效灵活的开发环境,无需担心环境兼容性问题。 文章目录 一、环境部署1. Perl开发环境安装2. Perl开发环境配置环境变量配置模块管理器编辑器集成调试工具二、代码示例文件处理Web开发三、常见问题1. 依赖管理问题2. 性能问题3.…...

Stable Diffusion Web UI - ControlNet 姿势控制 openpose
openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势,把姿势信息传递给 Stable Diffusion 扩散模型,让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果: 同样的姿势࿰…...
java中Json字符串转换
文章目录 map与json互转map转jsonmap形式的json转map list与json互转list转jsonlist形式的json转list map形式的json串中含有列表转列表 map与json互转 map转json JSONObject.toJSONString(map); public static void main(String[] args) {Map<String, Object> map n…...
springboot处理跨域请求
在Spring Boot中处理跨域请求(CORS, Cross-Origin Resource Sharing)通常有几种方法。跨域请求是指从一个域名的网页去请求另一个域名下的资源。为了安全起见,浏览器会阻止这种请求,除非服务器明确允许。 方法一:使用…...
S32G-VNP-RDB2开发环境搭建
下载官方镜像 刷机 cat /proc/partition or df -lh //查看sdcard卡再/dev目录挂在点 export DEVSD/dev/sdb sudo dd iffsl-image-auto-s32g274ardb2.sdcard of${DEVSD} bs1M && sync以上将SD-card插入就可以将开发板启动,串口接UART1,进入Lin…...

分布式唯一ID生成(二): leaf
文章目录 本系列前言号段模式双buffer优化biz优化动态step源码走读 雪花算法怎么设置workerId解决时钟回拨源码走读 总结 本系列 漫谈分布式唯一ID分布式唯一ID生成(二):leaf(本文)分布式唯一ID生成(三&am…...
【开发工具】Git
目录 核心概念基本命令工作流程Commit message Git 是一个分布式版本控制系统,用于跟踪在软件开发过程中对文件的修改。它允许多个开发者协作处理项目,并且可以有效地管理代码的历史记录。以下是 Git 的一些核心概念和功能: 核心概念 仓库 (R…...

【go从零单排】结构嵌套struct embedding
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在Go语言中,结构体嵌套(struct embedding)是一…...
Django 详细入门介绍
Django 详细入门介绍 1. 什么是 Django? Django 是一个开源的、用 Python 编写的 Web 框架。它遵循了“快速开发”和“不要重复自己”(DRY)的设计原则,旨在简化复杂的 Web 开发。Django 提供了多种强大的功能模块,如…...

万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN
🌺历史文章列表🌺 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总万字长文解读…...

HDR视频技术之二:光电转换与 HDR 图像显示
将自然界中的真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要的步骤:第一个是通过摄影设备,将外界的光信息转换为图像信息存储起来,本质上是存储为数字信号;第二个是通过显示设备,将图像信息转换…...

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销
一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的,因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁,近些年在嵌入式领域得到了很大的应用。 主要应用:机顶盒、数字电视、网络…...
Redis的缓存问题与应对策略
Redis 作为一种高效的缓存系统,在高并发环境下应用广泛,但也面临一些缓存问题,以下是常见问题及其应对策略。 1. 缓存穿透 问题描述 缓存穿透是指请求的数据在缓存和数据库中都不存在,但大量请求直接到达数据库,从而给…...

Java项目实战II基于Spring Boot的智慧生活商城系统的设计与实现(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着科技的飞速发展,人们的…...
每日一题之成绩排序
在N(N<30)名运动员参加的体操比赛中,有K(K<10)名裁判给每位运动员分别打分, 按规则每名运动员最后得分需去掉一个最高分和一个最低分, 然后把其他裁判的打分相加,计算得出该运…...
QT Widget:使用技巧
1、Qt中的QString和const char *之间转换,最好用toStdString().c_str()而不是toLocal8Bit().constData(),比如在setProperty中如果用后者,字符串中文就会不正确,英文正常。 2、数据库处理一般建议在主线程,如果非要在…...
深入Zookeeper节点操作:高级功能与最佳实践
Zookeeper之节点基本操作(二) 在《Zookeeper之节点基本操作(一)》中,我们介绍了如何创建、读取、更新、删除节点的基本操作。接下来将进一步探讨Zookeeper中节点的进阶操作和更多细节,包括节点的监视&…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...