当前位置: 首页 > news >正文

Ubuntu下如何管理多个ssh密钥

Ubuntu下如何管理多个ssh密钥

前言

我一直在逃避这个问题,误以为我能够单纯地用一个 ssh 走天下。

好吧,现实是我不得不管理多个 ssh 做,那就写个博客总结一下吧。

查阅后发现前人已经总结了不少,那我就结合之后,再发展一下吧,参考资料按照 markdown 的规范,放在文末。

Note:

  • 笔者 Ubuntu​ 为 24.04 LTS


目录

[toc]


如何生成并添加第一个密钥

  1.  ssh-keygen -t rsa -C "youremail@yourcompany.com"
    

    然后一路回车,就会在 ~/.ssh​ 下生成 id_rsa​, id_rsa.pub

  2.  ssh-add ~/.ssh/id_rsa
    

    将密钥 id_rsa​ 添加到 ssh-agent​ 中。

  3.  ssh-add -l
    

    可以通过该命令来确认私钥列表。

  4.  ssh-add -D
    

    该命令可以清空私钥列表。

至于如何配置 gitee​ 和 github​ 等,则默认都会,这篇文章的重心在于如何管理多个 ssh 密钥。


生成并添加多个密钥

生成并添加多个密钥,我们就需要编辑 config​ 文件。

  1.  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​ 公钥被存在哪里等等信息。

  2.  ssh-add ~/.ssh/your_identification
    

    我们将其添加到 ssh-agent​ 中。

  3.  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:配置使用用户名

    1. PreferredAuthentications

      1. keyboard-interactive

        交互式认证方式,当 SSH 客户端尝试连接到服务器时,如果服务器配置为使用 keyboard-interactive​ 认证,服务器会向客户端发送一系列问题(通常是用户名和密码),客户端需要提供答案。

      2. password

        需要输入用户名和密码来连接服务器。

      3. publickey

        用户生成密钥对,将公钥配置在服务器上,连接服务器时,服务器会要求用户提供公钥对应的私钥来证明身份。

  4.  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 做,那就写个博客总结一下吧。 查阅后发现前人已经总结了不少,那我就结合之后&#xff…...

[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、进销存管理:进销存管理是连锁企业的基础功能之一&#xf…...

统信UOS开发环境支持Perl

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

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势,把姿势信息传递给 Stable Diffusion 扩散模型,让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果: 同样的姿势&#xff0…...

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中处理跨域请求&#xff08;CORS, Cross-Origin Resource Sharing&#xff09;通常有几种方法。跨域请求是指从一个域名的网页去请求另一个域名下的资源。为了安全起见&#xff0c;浏览器会阻止这种请求&#xff0c;除非服务器明确允许。 方法一&#xff1a;使用…...

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插入就可以将开发板启动&#xff0c;串口接UART1&#xff0c;进入Lin…...

分布式唯一ID生成(二): leaf

文章目录 本系列前言号段模式双buffer优化biz优化动态step源码走读 雪花算法怎么设置workerId解决时钟回拨源码走读 总结 本系列 漫谈分布式唯一ID分布式唯一ID生成&#xff08;二&#xff09;&#xff1a;leaf&#xff08;本文&#xff09;分布式唯一ID生成&#xff08;三&am…...

【开发工具】Git

目录 核心概念基本命令工作流程Commit message Git 是一个分布式版本控制系统&#xff0c;用于跟踪在软件开发过程中对文件的修改。它允许多个开发者协作处理项目&#xff0c;并且可以有效地管理代码的历史记录。以下是 Git 的一些核心概念和功能&#xff1a; 核心概念 仓库 (R…...

【go从零单排】结构嵌套struct embedding

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在Go语言中&#xff0c;结构体嵌套&#xff08;struct embedding&#xff09;是一…...

Django 详细入门介绍

Django 详细入门介绍 1. 什么是 Django&#xff1f; Django 是一个开源的、用 Python 编写的 Web 框架。它遵循了“快速开发”和“不要重复自己”&#xff08;DRY&#xff09;的设计原则&#xff0c;旨在简化复杂的 Web 开发。Django 提供了多种强大的功能模块&#xff0c;如…...

万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…...

HDR视频技术之二:光电转换与 HDR 图像显示

将自然界中的真实场景转换为屏幕上显示出来的图像&#xff0c;往往需要经过两个主要的步骤&#xff1a;第一个是通过摄影设备&#xff0c;将外界的光信息转换为图像信息存储起来&#xff0c;本质上是存储为数字信号&#xff1b;第二个是通过显示设备&#xff0c;将图像信息转换…...

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销

一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的&#xff0c;因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁&#xff0c;近些年在嵌入式领域得到了很大的应用。 主要应用&#xff1a;机顶盒、数字电视、网络…...

Redis的缓存问题与应对策略

Redis 作为一种高效的缓存系统&#xff0c;在高并发环境下应用广泛&#xff0c;但也面临一些缓存问题&#xff0c;以下是常见问题及其应对策略。 1. 缓存穿透 问题描述 缓存穿透是指请求的数据在缓存和数据库中都不存在&#xff0c;但大量请求直接到达数据库&#xff0c;从而给…...

Java项目实战II基于Spring Boot的智慧生活商城系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着科技的飞速发展&#xff0c;人们的…...

每日一题之成绩排序

在N&#xff08;N<30&#xff09;名运动员参加的体操比赛中&#xff0c;有K&#xff08;K<10&#xff09;名裁判给每位运动员分别打分&#xff0c; 按规则每名运动员最后得分需去掉一个最高分和一个最低分&#xff0c; 然后把其他裁判的打分相加&#xff0c;计算得出该运…...

QT Widget:使用技巧

1、Qt中的QString和const char *之间转换&#xff0c;最好用toStdString().c_str()而不是toLocal8Bit().constData()&#xff0c;比如在setProperty中如果用后者&#xff0c;字符串中文就会不正确&#xff0c;英文正常。 2、数据库处理一般建议在主线程&#xff0c;如果非要在…...

深入Zookeeper节点操作:高级功能与最佳实践

Zookeeper之节点基本操作&#xff08;二&#xff09; 在《Zookeeper之节点基本操作&#xff08;一&#xff09;》中&#xff0c;我们介绍了如何创建、读取、更新、删除节点的基本操作。接下来将进一步探讨Zookeeper中节点的进阶操作和更多细节&#xff0c;包括节点的监视&…...

Astra Toolbox终极指南:如何快速掌握高性能GPU加速3D重建

Astra Toolbox终极指南&#xff1a;如何快速掌握高性能GPU加速3D重建 【免费下载链接】astra-toolbox ASTRA Tomography Toolbox 项目地址: https://gitcode.com/gh_mirrors/as/astra-toolbox 还在为复杂的CT重建算法而烦恼吗&#xff1f;想要让医学影像处理和工业检测的…...

本地AI对话伴侣实战:Electron+llama.cpp部署与调优指南

1. 项目概述&#xff1a;一个桌面端的本地AI对话伴侣最近在折腾本地大语言模型&#xff08;LLM&#xff09;的时候&#xff0c;发现了一个挺有意思的项目&#xff1a;ItsPi3141/alpaca-electron。简单来说&#xff0c;这是一个用 Electron 框架打包的桌面应用程序&#xff0c;它…...

Go语言开发利器:gocode代码补全与定义跳转原理与实践

1. 项目概述&#xff1a;一个为Go语言开发者准备的“瑞士军刀”如果你是一名Go语言开发者&#xff0c;或者正在学习Go&#xff0c;那么你一定遇到过这样的场景&#xff1a;在阅读一个开源项目时&#xff0c;面对一个陌生的函数或方法&#xff0c;你迫切想知道它的定义在哪里、它…...

Swift集成飞书API:使用feishu-swift SDK构建高效机器人

1. 项目概述&#xff1a;一个连接飞书与Swift生态的桥梁 最近在折腾一个内部工具&#xff0c;需要把服务端的一些数据变动实时同步到飞书群里&#xff0c;方便团队同学及时跟进。服务端是用Swift写的&#xff0c;而飞书官方虽然有开放的API&#xff0c;但直接上手去调&#xf…...

DGX服务器上Spark性能优化:NUMA绑定与GPU资源精细调度实践

1. 项目概述与核心价值最近在折腾一个挺有意思的项目&#xff0c;叫adadrag/nemoclaw-dgx-spark。乍一看这个名字&#xff0c;像是把几个八竿子打不着的技术名词硬凑在了一起&#xff1a;adadrag像是个开发者代号&#xff0c;nemoclaw听着像某个工具或框架&#xff0c;dgx让人联…...

Proxima向量检索库:硬件优化与量化技术实战解析

1. 项目概述&#xff1a;一个为现代开发者打造的“近邻”代码库 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Zen4-bit/Proxima”。乍一看这个标题&#xff0c;可能会有点摸不着头脑。“Zen4-bit”像是一个用户名或者某种架构的代号&#xff0c;而“Proxima”则让人联…...

从Excel到数据库:用Pandas Timestamp统一你的时间数据(pd.to_datetime实战解析)

从Excel到数据库&#xff1a;用Pandas Timestamp统一你的时间数据&#xff08;pd.to_datetime实战解析&#xff09; 在数据工程领域&#xff0c;时间数据的标准化处理往往是ETL流程中最容易被低估的痛点。当Excel表格中的"2023/1/15"遇上数据库里的"15-JAN-23&q…...

ARM SCTLR2_EL2寄存器解析与虚拟化安全控制

1. ARM SCTLR2_EL2寄存器架构解析SCTLR2_EL2是ARMv8/v9架构中EL2&#xff08;Hypervisor&#xff09;级别的扩展系统控制寄存器&#xff0c;作为标准SCTLR_EL2的补充&#xff0c;它通过掩码位机制实现了对关键系统功能的细粒度控制。这个64位寄存器主要包含两类功能字段&#x…...

基于KB2040与Kailh大键的DIY宏键盘:从电路原理到3D打印全流程

1. 项目概述与核心思路 如果你和我一样&#xff0c;每天在电脑前要重复执行大量组合键操作&#xff0c;比如设计师频繁切换工具、程序员调试代码、视频剪辑师来回切时间轴&#xff0c;那么一个自定义的宏键盘绝对是效率神器。市面上的成品宏键盘要么键位固定&#xff0c;要么价…...

大语言模型对抗性攻击与防御:Decepticon框架原理与实践

1. 项目概述&#xff1a;当AI学会“伪装”&#xff0c;一场攻防博弈的新范式最近在安全圈和AI研究领域&#xff0c;一个名为“Decepticon”的项目引起了我的注意。这个项目来自PurpleAILAB&#xff0c;名字本身就充满了对抗的意味——“Decepticon”直译是“霸天虎”&#xff0…...