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

【技能---构建github中SSH密钥的流程】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • SSH
  • 基于账号口令的安全验证
  • 通过SSH连接到服务器
    • 打开终端(命令行界面)
    • 使用 SSH 命令连接:
  • 在 Ubuntu 中生成 SSH 密钥并将其添加到 GitHub 的步骤如下:
    • 步骤 1: 检查现有 SSH 密钥
    • 步骤 2: 生成新的 SSH 密钥
    • 步骤 3: 添加 SSH 密钥到 SSH-Agent
    • 步骤 4: 复制 SSH 公钥
    • 步骤 5: 将 SSH 公钥添加到 GitHub
    • 步骤 6: 测试 SSH 连接
  • 总结


前言

在使用github的过程中,遇到了创建SSH-Agent密钥管理的问题,于是乎进行了下面的操作:

在github上面添加秘钥的时候,保存会出现这个错误:

Key is invalid. You must supply a key in OpenSSH public key format

提示:以下是本篇文章正文内容,下面案例可供参考

SSH

SSH(Secure Shell)是一种用于安全远程登录到计算机系统和执行命令的协议。它通过加密通信的方式,确保用户在网络上的连接是安全的。

以下是 SSH 的主要特点和功能:

安全性: SSH 提供了加密的通信,包括身份验证和数据传输。这使得在不受信任的网络上安全地进行远程管理成为可能。

远程登录: SSH 允许用户从本地计算机登录到远程计算机系统,并在远程系统上执行命令。

文件传输: SSH 支持安全的文件传输,允许用户在本地和远程系统之间传输文件。

端口转发: SSH 可以用于设置端口转发,将本地计算机的端口映射到远程计算机上,实现安全的网络服务。

公钥身份验证: SSH 支持公钥身份验证,允许用户通过公钥和私钥对进行身份验证,而无需输入密码。

代理: SSH 代理(ssh-agent)可用于缓存和管理用户的私钥,以便在会话期间无需再次输入密码。

隧道: SSH 支持创建安全的通信隧道,用于加密和保护网络上的数据传输。

基于账号口令的安全验证

基于账号口令的安全验证是一种常见的身份验证机制,用户需要提供正确的账号(用户名)和口令(密码)才能访问系统或服务。这种验证方式的基本原理如下:

账号: 用户需要提供其唯一标识,通常是一个用户名。这是用于标识用户身份的信息。

口令: 用户必须提供与其账号相关联的密码。这是一个保密信息,只有用户本人应该知道。密码通常通过哈希算法进行存储,以增加安全性。

验证过程: 当用户尝试登录或访问系统时,输入的账号和口令将与系统中存储的相应信息进行比对。如果输入的信息与系统记录的匹配,用户将被授权访问。

安全性考虑:为了增加安全性,密码应该足够复杂,并且定期更新。系统还可以采用一些防护措施,如账号锁定(一定次数失败后锁定账号)、多因素认证等。

通过SSH连接到服务器

通过 SSH 连接到服务是通过 Secure Shell(SSH)协议建立远程连接的过程。以下是连接到服务的基本步骤:

打开终端(命令行界面)

使用 SSH 命令连接:

在终端中使用 ssh 命令来建立 SSH 连接。基本的 SSH 连接命令格式如下:

ssh username@hostname

username 是远程服务器上的用户名。
hostname 是远程服务器的主机名或 IP 地址。

例如:

ssh user@example.com

或者,如果使用 IP 地址:

ssh user@192.168.1.100

输入密码: 如果是首次连接或之前未缓存过该服务器的公钥,系统会要求输入密码。输入正确的密码后按回车键。

认证过程: SSH 将进行身份验证并建立加密连接。一旦认证成功,你将进入远程服务器的命令行界面。

如果连接成功,你就可以在远程服务器上执行命令、编辑文件等操作。在连接的过程中,SSH 会确保通信是加密的,从而提供了一种安全的远程访问方式。

在 Ubuntu 中生成 SSH 密钥并将其添加到 GitHub 的步骤如下:

步骤 1: 检查现有 SSH 密钥

首先,检查是否已经存在 SSH 密钥。打开终端并执行以下命令:

ls -al ~/.ssh

查看目录中是否存在 id_rsa 和 id_rsa.pub 文件。如果这两个文件存在,你已经有了一个 SSH 密钥。

我的终端输出:

(base) l@l:~$ l -al ~/.ssh
总用量 16
drwxrwxr-x  2 l l 4096 911 14:44 .
drwxr-xr-x 61 l l 4096 124 11:24 ..
-rw-rw-r--  1 l l  113 913 13:58 config
-rw-r--r--  1 l l 2440 1130 18:11 known_hosts

即是没有相应的文件,于是执行下面的命令:

步骤 2: 生成新的 SSH 密钥

如果在步骤 1 中不存在 SSH 密钥,或者你想要生成一个新的密钥对,执行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

在这个命令中,将 “your_email@example.com” 替换为你的 GitHub 注册邮箱。按照提示,你可以选择为新密钥指定文件名和路径,或者直接按 Enter 使用默认路径。

我的终端输出:

base) l@l:~$ ssh-keygen -t rsa -b 4096 -C "z@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/l/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/l/.ssh/id_rsa
Your public key has been saved in /home/l/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:RRTmtjOHhGF8mZgFKoCBHiRaArYWnnKXBlt8vzOFlS4 z@163.com
The key's randomart image is:
+---[RSA 4096]----+
|O*+..  .+**=     |
|B++=...o+**      |
|+=+ =....==      |
|oo o .  E+oo     |
|        S+= .    |
|        +  +     |
|         o       |
|                 |
|                 |
+----[SHA256]-----+

如果出现以上打印内容, 则说明你生成成功了

步骤 3: 添加 SSH 密钥到 SSH-Agent

运行以下命令将 SSH 密钥添加到 SSH-Agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

我的终端输出:

(base) l@l:/media/l$ eval "$(ssh-agent -s)"
Agent pid 152382
(base) l@l:/media/l$ ssh-add ~/.ssh/id_rsa
Identity added: /home/l/.ssh/id_rsa (z@163.com)
(base) l@l:/media/l$ xclip -sel clip < ~/.ss

步骤 4: 复制 SSH 公钥

执行以下命令来将 SSH 公钥复制到剪贴板:

xclip -sel clip < ~/.ssh/id_rsa.pub

我的终端输出:

(base) l@l:/media/ls$ xclip -sel clip < ~/.ssh/id_rsa.pubCommand 'xclip' not found, but can be installed with:sudo apt install xclip

如果没有安装 xclip,你可以使用以下命令:

sudo apt-get install xclip

再次运行:

xclip -sel clip < ~/.ssh/id_rsa.pub

步骤 5: 将 SSH 公钥添加到 GitHub

登录到你的 GitHub 帐户。

在右上角,点击你的头像,然后选择 “Settings”。

在左侧导航栏中,点击 “SSH and GPG keys”。

点击 “New SSH key”。

在 “Title” 字段中,为密钥提供一个描述性的名称。

在 “Key” 字段中,粘贴你复制的 SSH 公钥。

点击 “Add SSH key”。

步骤 6: 测试 SSH 连接

最后,为了测试是否成功,运行以下命令:

ssh -T git@github.com

如果一切设置正确,你将看到类似以下的消息:

Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.

至此,你已经成功生成并添加 SSH 密钥,可以使用 SSH 协议与 GitHub 进行通信。


总结

okok ,以上就是构建github中SSH密钥的流程,如有不当之处,还请大家斧正!!!!

相关文章:

【技能---构建github中SSH密钥的流程】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言SSH基于账号口令的安全验证通过SSH连接到服务器打开终端&#xff08;命令行界面&#xff09;使用 SSH 命令连接&#xff1a; 在 Ubuntu 中生成 SSH 密钥并将其添…...

linux-centos服务器离线安装yapi(包含nodejs、mongodb、yapi、pm2离线安装)

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …...

手撕重采样,考虑C的实现方式

一、参考文章&#xff1a; 重采样、上采样、下采样 - 知乎 (zhihu.com) 先直接给结论&#xff0c;正常重采样过程如下&#xff1a; 1、对于原采样率fs&#xff0c;需要重采样到fs1&#xff0c;一般fs和fs1都是整数哈&#xff0c;则先找fs和fs1的最小公倍数&#xff0c;设为m…...

网络安全产品之认识入侵防御系统

由于网络安全威胁的不断演变和增长。随着网络技术的不断发展和普及&#xff0c;网络攻击的种类和数量也在不断增加&#xff0c;给企业和个人带来了巨大的安全风险。传统的防火墙、入侵检测防护体系等安全产品在面对这些威胁时&#xff0c;存在一定的局限性和不足&#xff0c;无…...

​第20课 在Android Native开发中加入新的C++类

​这节课我们开始利用ffmpeg和opencv在Android环境下来实现一个rtmp播放器&#xff0c;与第2课在PC端实现播放器的思路类似&#xff0c;只不过在处理音视频显示和播放的细节略有不同。 1.压缩备份上节课工程文件夹并修改工程文件夹为demo20&#xff0c;将demo20导入到Eclipse或…...

python学习笔记11(程序跳转语句、空语句)

&#xff08;一&#xff09;程序跳转语句 1、break 用法&#xff1a;循环语句中使用&#xff0c;结束本层循环&#xff0c;一般搭配if来使用。注意while/else语法 示例&#xff1a; i0; while i<3:user_nameinput(请输入用户名&#xff1a;)pwdinput("请输入密码&a…...

C. Doremy‘s City Construction(二分图问题)

思路&#xff1a;把集合划分成两部分,一部分中每个数都比另一部分小,这两部分连成一个完全二分图,这种情况是最优的,还需要特判所有数都相等的情况. 代码&#xff1a; void solve(){int n;cin >> n;vector<int>a(n 1);for(int i 1;i < n;i )cin >> a[…...

PHP“引用”漏洞

今日例题&#xff1a; <?php highlight_file(__FILE__); error_reporting(0); include("flag.php"); class just4fun { var $enter; var $secret; } if (isset($_GET[pass])) { $pass $_GET[pass]; $passstr_replace(*,\*,$pass); } $o unser…...

计算机网络-AAA原理概述

对于任何网络&#xff0c;用户管理都是最基本的安全管理要求之一&#xff0c;在华为设备管理中通过AAA框架进行认证、授权、计费实现安全验证。 一、AAA概述 AAA&#xff08;Authentication(认证), Authorization(授权), and Accounting(计费)&#xff09;是一种管理框架&#…...

Oracle BIEE 示例(一)数据透视表2

1 背景 版本:BIEE 12C 视图:数据透视表 实现内容(顺序与具体内容不一致): 2 空列显示(方法一) 2.1 问题 列为空时,标题栏不显示信息。 2.2 期望 即使数据为空,也要显示列名。 2.3 官方资料 2.3.1 操作步骤 2.3.1.1 要在分析级别关闭空值隐藏,请执行以下操作…...

算法训练营Day50(动态规划11)

说明 较难&#xff0c;二刷再仔细打代码 123.买卖股票的最佳时机III 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 提醒 这道题一下子就难度上来了&#xff0c;关键在于至多买卖两次&#xff0c;这意味着可以买卖一次&#xff0c;可以买卖两次&a…...

DS:顺序表的实现(超详细!!)

创作不易&#xff0c;友友们给个三连呗&#xff01; 本文为博主在DS学习阶段的第一篇博客&#xff0c;所以会介绍一下数据结构&#xff0c;并在最后学习对顺序表的实现&#xff0c;在友友们学习数据结构之前&#xff0c;一定要对三个部分的知识——指针、结构体、动态内存管理的…...

用flinkcdc debezium来捕获数据库的删除内容

我在用flinkcdc把数据从sqlserver写到doris 正常情况下sqlserver有删除数据&#xff0c;doris是能捕获到并很快同步删除的。 但是我现在情况是doris做为数仓&#xff0c;数据写到ods&#xff0c;ods的数据还会通过flink计算后写入dwd层&#xff0c;所以此时ods的数据是删除了…...

mariadb数据库从入门到精通

mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化一、实验前提二、mariadb数据库的安装三、mariadb数据库安全初始化3.1 设定数据库基本的安全初始化3.2关闭对外开放端口 系列文章目录一、查看数据库二、进入库并且查看…...

LabVIEW探测器CAN总线系统

介绍了一个基于FPGA和LabVIEW的CAN总线通信系统&#xff0c;该系统专为与各单机进行系统联调测试而设计。通过设计FPGA的CAN总线功能模块和USB功能模块&#xff0c;以及利用LabVIEW开发的上位机程序&#xff0c;系统成功实现了CAN总线信息的收发、存储、解析及显示功能。测试结…...

侧输出流(Side Output)

侧输出流&#xff08;Side Output&#xff09;是处理函数中的一个重要功能&#xff0c;允许我们将自定义的数据发送到侧输出流中进行处理或输出。通过将数据发送到侧输出流&#xff0c;我们可以将不同的数据流进行分离&#xff0c;以便进行不同的处理和操作。 在处理函数中&…...

Vue 动态组件与异步组件:深入理解与全面应用

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介1. 动态组件实现原理&#xff1a;用法示例&#xff1a; 2. 异步组件实现原理&#xff1a;用法示例&#xff1a; 3. 异步组件的高级应用a. 异步组件的命名&#xff1a;b. 异步组件的加载状态管理&#xff1a; ⭐ 写在最后 ⭐ 专栏简…...

Zephyr 源码调试

背景 调试环境对于学习源码非常重要&#xff0c;但嵌入式系统的调试环境搭建稍微有点复杂&#xff0c;需要的条件略多。本文章介绍如何在 Zephyr 提供的 qemu 上调试 Zephyr 源码&#xff0c;为后续分析 Zephyr OS 相关原理做铺垫。 环境 我的开发环境为 wsl ubuntu&#xf…...

数学建模绘图

注意&#xff1a;本文章旨在记录观看B站UP数模加油站之后的笔记文章&#xff0c;无任何商业用途~~ 必备网站 以下网站我都试过&#xff0c;可以正常访问 配色&#xff08;取色&#xff09;网站&#xff1a; Color Palettes Generator and Color Gradient Tool Python&#x…...

代码随想录算法训练营第十天 | 239.滑动窗口最大值、347.前K个高频元素

代码随想录算法训练营第十天 | 239.滑动窗口最大值、347.前K个高频元素 文章目录 代码随想录算法训练营第十天 | 239.滑动窗口最大值、347.前K个高频元素1 LeetCode 239.滑动窗口最大值2 LeetCode 347.前K个高频元素 1 LeetCode 239.滑动窗口最大值 题目链接&#xff1a;https…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【 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内存模型的介绍 内存模型主要分…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...