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

SSH公私钥连接(Git、Linux服务器)

前言

SSH (Secure Shell) 是一种网络协议,用于在不安全的网络中提供安全的远程登录和其他网络服务。以下是关于 SSH 连接的核心信息

  • SSH 连接的基本原理:SSH 使用非对称加密技术(公钥和私钥)验证身份,确保通信内容加密。流程如下

    1. 客户端发起连接:请求与服务器建立 SSH 会话。
    2. 服务器发送公钥:服务器将自己的公钥发送给客户端。
    3. 验证服务器身份:客户端验证服务器的真实性(通过检查公钥指纹或 CA 证书)。
    4. 身份验证:客户端通过以下方式证明自己的身份:
      • 密码验证:直接输入密码。
      • 公钥验证:客户端用私钥签名,服务器用保存的公钥验证。
    5. 建立加密通道:双方使用会话密钥加密通信内容。
  • 密钥对的生成原理

    • 私钥:是通过随机数生成的,属于绝对机密信息。
    • 公钥:由私钥经过特定的数学算法推导得出,所有人都可以获取。
    • 不可逆性:无法通过公钥反向计算出私钥,这是加密体系安全性的关键所在。
  • 连接流程图如下

    在这里插入图片描述

  • 这里主要讲解和使用公钥验证的步骤,下面我挑两个功能来演示

Git使用SSH拉取代码

  • 我们在拉去Git仓库时,可以看到Web UI会提供两种克隆方式
    1. 使用http + 账号 + 密码克隆
    2. 使用SSH克隆
  • 当然,我们大部分人肯定都会使用第一种方式,方便,简单。但是有时候我们克隆的环境不会把我们的账号密码保存到凭据管理中,导致我们每次提交代码都需要输入账号+密码,非常的麻烦。那我们就可以考虑使用SSH的方式来避免这种困扰(当然,也会更加的安全)
  • 下面我以windows使用SSH拉取Git仓库代码为例演示

1、本地生成公私钥

  • 我们可以使用windows自带的命令生成,打开 **Windows PowerShell** 或者 **Git Bash**

  • 通过命令 ssh-keygen 生成 SSH Key

    ssh-keygen -t ed25519 -C "Gitee SSH Key"
    
    • -t ed25519 指定密钥类型为 Ed25519(推荐的现代加密算法)
    • -C 添加注释,方便识别该密钥的用途。
  • 下面我们连续三个回车确认即可,输出如下

    在这里插入图片描述

  • 公私钥即生成完毕

2、查看生成的公私钥

  • 上面步骤执行完成后,根据第一步的回车路径,即可查找到生成的公私钥文件

    • id_ed25519:私钥文件,放在客户端保存
    • id_ed25519.pub:公钥文件,可以公开,使用记事本等工具查看

    在这里插入图片描述

3、配置公钥

  • 接下来,我们要把公钥配置到我们的Git仓库上

  • 右上角用户下拉框中设置,左侧菜单SSH公钥,然后添加公钥

    在这里插入图片描述

  • 确定后,填写密码验证,即可新增成功,后续拉取代码只需要克隆ssh地址,即可自动进行认证,无需再手动填写账号密码了!

  • 注意:一台电脑只能对应一份公私钥。如果要换电脑拉取属于你仓库的代码,那么需要重新在新电脑上生成公私钥,再将公钥新增到Git仓库上

4、测试

  • 账户的 SSH Key 和账户绑定,当账户具有 推送/拉取 权限时可通过 SSH 方式 推送/拉取 的仓库。

  • 通过 ssh -T 测试时,输出 SSH Key 绑定的用户名:

    $ ssh -T git@gitee.com
    Hi USERNAME! You've successfully authenticated, but GITEE.COM does not provide shell access.
    
  • 上面命令要在Git 命令行中输入验证

    在这里插入图片描述

5、将原根据HTTP地址拉下来的仓库改为SSH

  • 当学会上面使用SSH的连接方式时,你可能会想修改原来使用HTTP拉取下来的代码,否则即便你配置好公钥了,但还是不能使用ssh连接
  • 命令如下:
# 查看远程仓库地址,首先要进入项目的目录,打开cmd窗口
git remote -v# 修改远程仓库地址,比如:git remote set-url origin git@github.com:user/repo.git
git remote set-url <remote-name> <new-url># 最后再执行第一个命令,查看仓库地址是否修改成功

在这里插入图片描述

使用SSH连接Linux

  • 下面使用windows连接Linux(CentOS 7)为例进行演示

1、本地生成公私钥

  • 这里和上面第一章节一模一样,就不演示了本地生成公私钥,我这里只使用命令ssh-keygen生成

2、确认并开启服务器的SSH服务

以下命令基于CentOS 7,其余操作系统的命令网上搜一下就好了

# 检查当前ssh服务是否启动
systemctl status sshd# 如果没有安装的话安装ssh
yum install openssh-server# 启动SSH服务
systemctl start sshd# 设置 SSH 服务开机自启
systemctl enable sshd# 再次执行第一个命令,查看状态

3、配置公钥

3.1、方法一(使用 ssh-copy-id(需先安装))

  • 安装工具

    scoop install ssh-copy-id  # 需先安装 Scoop 包管理器
    
  • 复制公钥,执行如下命令,例如:ssh-copy-id root@192.168.71.111

    ssh-copy-id user@server_ip
    
  • 执行过程

    1. 系统会提示输入服务器密码(仅首次需要)。
    2. 验证成功后,公钥会自动添加到服务器的 ~/.ssh/authorized_keys 文件中。

3.2、方法二(手动复制)

  • 接下来,我们要把本地生成的公钥文件,放入Linux服务器的~/.ssh/authorized_keys文件中,执行如下命令

    # 先检查是否有/root/.ssh/authorized_keys文件,如果没有先创建
    mkdir -p /root/.sshcd /root/.sshtouch authorized_keys# 追加文件内容
    echo 你的公钥内容 >> ~/.ssh/authorized_keys
    

4、连接服务器

  • 打开windowsPowerShell,输入以下命令,比如:ssh root@192.168.71.111

    ssh 用户名@服务器IP地址
    
  • 当首次连接到服务器时,系统会询问是否接受服务器的公钥。键入 yes 然后按 Enter

  • 输入 CentOS 用户的密码并按 Enter

  • 预期结果:

    • 若配置正确,将直接连接,无需输入密码(除非设置了密钥密码)。
    • 若仍提示密码,可能是公钥未正确配置。

在这里插入图片描述

http://www.xdnf.cn/news/13886.html

相关文章:

  • 篇章五 系统性能优化——资源优化——CPU优化(2)
  • 记录jackson解析出错
  • 设计模式(二)
  • Python自动化办公工具开发实践:打造智能报表生成系统的心得与洞见
  • 3.ES索引、映射、字段和文档
  • 锂电池充电芯片XSP30,2-3节串联锂电池升降压充电管理芯片
  • FastAPI如何用角色权限让Web应用安全又灵活?
  • 探索现代 Web 开发:从 HTML5 到 Vue.js 的全栈之旅
  • Linux部署elasticsearch 单机版
  • 自然语言处理期末复习
  • 高效账号信息管理工具,可安全随机生成密码
  • VSCode如何优雅的debug python文件,包括外部命令uv run main.py等等
  • 理解与建模弹性膜-AI云计算数值分析和代码验证
  • LeetCode - 76. 最小覆盖子串
  • 三维激光雷达在智慧工厂物流测量中的应用分析
  • Python内存互斥与共享深度探索:从GIL到分布式内存的实战之旅
  • Oracle 中使用CONNECT BY、START WITH递归查询
  • 黄仁勋在2025年巴黎VivaTech大会上的GTC演讲:AI工厂驱动的工业革命(下)
  • 今日行情明日机会——20250613
  • 胶囊网络破解图像旋转不变性难题 ——从空间关系到姿态矩阵的几何深度学习革命
  • 轻量级 ioc 框架 loveqq,支持接口上传 jar 格式的 starter 启动器并支持热加载其中的 bean
  • 经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计
  • MySQL(多表设计、多表查询)
  • Android S - 重复播放按键音(上下左右、OK)
  • Java详解LeetCode 热题 100(32):LeetCode 138. 随机链表的复制
  • Linux常用命令加强版替代品
  • 探索弹性弦行为:从绘图到问题解决-AI云计算数值分析和代码验证
  • 永不休眠:Linux 守护进程的工作原理
  • visual studio小番茄插件某些快捷键失效
  • 1万美元iO bounty破解之旅