当前位置: 首页 > 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…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...