ssh 报: “no matching host key type found. Their offer“

ssh 报: “no matching host key type found. Their offer” 240729

用 Windows11环境下的 git bash 自带的 ssh 登录 virtualbox上的CentOS6.10时, 报:“no matching host key type found. Their offer”

git版本: git version 2.43.0.windows.1
ssh版本: OpenSSH_9.5p1, OpenSSL 3.1.4 24 Oct 2023

原因是新版的 ssh 禁用了 ssh-rsa 算法

解决办法1:

例如把 ssh root@localhost -p61022 改为

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa root@localhost -p61022

ssh -o HostKeyAlgorithms=+ssh-rsa root@localhost -p61022

ssh -o HostKeyAlgorithms=ssh-rsa root@localhost -p61022

解决办法2:

在 git 安装文件夹下的 \etc\ssh\ssh_config 文件中加入

Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

例如

#	$OpenBSD: ssh_config,v 1.36 2023/08/02 23:04:38 djm Exp $# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.# Site-wide defaults for some commonly used options.  For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.# Host *
#   ForwardAgent no
#   ForwardX11 no
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP no
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
#   UserKnownHostsFile ~/.ssh/known_hosts.d/%k
# Added by git-extra
Host ssh.dev.azure.comHostkeyAlgorithms +ssh-rsaPubkeyAcceptedAlgorithms +ssh-rsa
# Added by git-extra
Host *.visualstudio.comHostkeyAlgorithms +ssh-rsaPubkeyAcceptedAlgorithms +ssh-rsa###  2407290509 append
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

可看到, 官方给 ssh.dev.azure.com 和 Host *.visualstudio.com 加了




ssh -o

在SSH(Secure Shell)命令中,-o 选项后面通常跟随一个配置指令,用于在命令行中临时设置SSH客户端的配置选项。这种方式允许你覆盖SSH客户端配置文件(通常是~/.ssh/config或者/etc/ssh/ssh_config)中的设置,或者为单个SSH会话指定特定的配置。

-o 选项后面紧跟的是配置项的名称和值,配置项和值之间通常使用=分隔,如果配置项的值包含空格,则整个值可能需要用引号括起来。

ssh -o HostKeyAlgorithms

ssh -o HostKeyAlgorithms 选项允许你指定 SSH 客户端在连接服务器时应该接受哪些主机密钥算法。这个选项在 SSH 客户端配置中非常重要,因为它可以帮助你控制连接的安全性。

随着 SSH 协议的发展,一些较旧的密钥算法(如 RSA1)已经被认为是不安全的,而新的、更安全的算法(如 ecdsa-sha2-nistp256, rsa-sha2-512 等)已经被引入。通过使用 -o HostKeyAlgorithms 选项,你可以指定 SSH 客户端只接受你认为安全的那些算法。

例如,如果你想要 SSH 客户端只接受使用 ECDSA(椭圆曲线数字签名算法)和 RSA(Rivest-Shamir-Adleman)签名算法(且要求 RSA 至少使用 SHA-2 散列函数)的主机密钥,你可以这样配置你的 SSH 命令:

ssh -o HostKeyAlgorithms=+ecdsa-sha2-nistp256,+rsa-sha2-512 user@hostname
ssh -o HostKeyAlgorithms=ssh-rsa

ssh -o HostKeyAlgorithms=ssh-rsa 这个命令选项用于在 SSH 连接时指定服务器主机密钥的算法。在这个例子中,它指定了仅使用 ssh-rsa 算法来验证服务器的身份。然而,需要注意的是,ssh-rsa 算法已经不再被认为是安全的最佳选择,因为它容易受到一些已知的攻击,如小公钥指数攻击和因子分解攻击。

从 OpenSSH 7.0 开始,ssh-rsa 已经不是默认的密钥算法了,而是被更安全的算法(如 ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521rsa-sha2-256rsa-sha2-512ssh-ed25519)所取代。

尽管出于兼容性考虑,你可能需要暂时使用 ssh-rsa,但建议逐步迁移到更安全的算法上。如果你控制服务器,你应该更新 SSH 服务器的配置以使用更安全的密钥算法,并在客户端相应地更新你的 SSH 客户端配置或连接选项。

如果你只是偶尔需要连接到某个仍在使用 ssh-rsa 的服务器,使用 ssh -o HostKeyAlgorithms=+ssh-rsa(注意加号 +)可以确保在保持对其他更安全算法支持的同时,也接受 ssh-rsa 算法。然而,如果你完全确定只与 ssh-rsa 服务器通信,并且了解相关的安全风险,那么直接使用 ssh -o HostKeyAlgorithms=ssh-rsa 也是可以的。

不过,请记住,最好的做法是尽可能避免使用 ssh-rsa,并在可能的情况下升级到更安全的密钥算法。

注意,在 HostKeyAlgorithms 的值前面使用 + 符号是可选的,但在某些情况下(尤其是当你想要明确添加某个算法而不是替换默认列表时),使用 + 符号会更加清晰。然而,在许多 SSH 客户端实现中,简单地列出你想要的算法而不使用 + 也是有效的。

如果你想要完全禁用对旧算法的支持(比如,只接受 ECDSA 和 RSA-SHA2 密钥),你可以省略 + 符号,并确保你的列表中没有包含任何你认为不安全的算法。但是,请注意,这样做可能会阻止你连接到一些仍然使用旧算法的服务器。

最后,请记得这个选项的效果是临时的,它只会影响你当前执行的 SSH 命令。如果你想要永久更改这个设置,你应该在你的 SSH 客户端配置文件中(通常是 ~/.ssh/config)设置 HostKeyAlgorithms 选项。

其它一些-o选项

  1. 设置端口号

    ssh -o Port=2222 user@hostname
    

    这个命令将SSH会话的端口号设置为2222,而不是默认的22端口。

  2. 禁用主机密钥检查警告:这降低了安全性):

    ssh -o StrictHostKeyChecking=no user@hostname
    

    这会在连接到新主机时自动接受并添加未知的主机密钥到~/.ssh/known_hosts文件,而不是询问用户是否接受。

  3. 设置连接超时

    ssh -o ConnectTimeout=10 user@hostname
    

    这个命令设置了连接尝试的超时时间为10秒。

  4. 使用特定的私钥文件

    ssh -o IdentityFile=/path/to/your/private/key user@hostname
    

    这告诉SSH客户端在认证时使用指定的私钥文件。

  5. 设置日志级别

    ssh -o LogLevel=VERBOSE user@hostname
    

    这会增加SSH客户端的日志详细程度,有助于调试连接问题。

注意

  • 使用-o选项时,可以指定多个配置项,只需在命令中重复-o选项即可。
  • 某些配置项可能涉及到安全性问题,如禁用主机密钥检查,应谨慎使用。
  • 始终确保你的SSH密钥和配置文件受到妥善保护,避免未授权访问。

通过-o选项,SSH提供了一种灵活的方式来为不同的SSH会话定制配置,而无需修改全局或用户级别的SSH配置文件。




HostKeyAlgorithms +ssh-rsa , PubkeyAcceptedKeyTypes +ssh-rsa , PubkeyAcceptedAlgorithms +ssh-rsa

在SSH配置中,HostKeyAlgorithmsPubkeyAcceptedKeyTypesPubkeyAcceptedAlgorithms 这三个选项都涉及到SSH密钥和算法的使用。然而,从安全性的角度来看,直接在这些选项中添加 +ssh-rsa 可能不是最佳实践,因为RSA密钥算法(特别是较短的密钥长度)已经被认为在某些情况下不够安全,容易受到攻击。

HostKeyAlgorithms

HostKeyAlgorithms 选项用于指定SSH客户端在验证SSH服务器身份时接受的公钥算法。现代SSH服务器和客户端通常推荐使用更安全的算法,如 ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521rsa-sha2-512ssh-ed25519

如果你需要在配置中包含 ssh-rsa(即RSA密钥算法),可以这样做,但请注意这可能会降低安全性。例如:

HostKeyAlgorithms +ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519

但请注意,通常不推荐仅使用 ssh-rsa

PubkeyAcceptedKeyTypes

PubkeyAcceptedKeyTypes 选项用于指定SSH服务器在公钥认证过程中接受的公钥类型。与 HostKeyAlgorithms 类似,这个选项也建议使用更安全的算法。如果你需要包含 ssh-rsa,可以这样做:

PubkeyAcceptedKeyTypes +ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519

但同样地,仅使用 ssh-rsa 可能会带来安全风险。

PubkeyAcceptedAlgorithms

PubkeyAcceptedAlgorithms 选项实际上与 PubkeyAcceptedKeyTypes 类似,但在某些SSH版本中可能用于更广泛的公钥算法配置。不过,请注意,具体的选项名称和用法可能因SSH版本和配置而异。对于大多数现代SSH版本,你可能不需要单独设置这个选项,除非你有特定的配置需求。

安全性建议

  • 升级密钥算法:尽可能使用更安全的密钥算法,如ECDSA或ED25519。
  • 密钥长度:对于RSA密钥,至少使用2048位长度,最好是4096位。
  • 定期更换密钥:定期更换SSH密钥以减少潜在的安全风险。
  • 禁用不安全的算法:在可能的情况下,禁用 ssh-rsa 和其他已知不安全的算法。

如果你必须保持与旧系统的兼容性,并且无法避免使用 ssh-rsa,请确保你了解相关的安全风险,并采取适当的缓解措施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Google Test 学习笔记(简称GTest)

文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest (下载和编译)2.1.2 编写测试2.1.3 运行测试2.1.4 高级特性2.1.5 调试和分析 2.2 源码自带测试用例2.3 TEST 使用2.3.1 TestCase的介绍2.3.2 TEST宏demo1demo2 2.3.3 TEST_F宏2.3…

wincc 远程和PLC通讯方案

有 5个污水厂 的数据需要集中监控到1个组态软件上,软件是WINCC。每个污水厂监控系统都是独立的,已经投入运行了, 分站也是WINCC 和西门子PLC 。采用巨控远程模块的话,有两种方式:一种是从现场的PLC取数据,一种是从分站…

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…

【8月EI会议推荐】第四届区块链技术与信息安全国际会议

一、会议信息 大会官网:http://www.bctis.nhttp://www.icbdsme.org/ 官方邮箱:icbctis126.com 组委会联系人:杨老师 19911536763 支持单位:中原工学院、西安工程大学、齐鲁工业大学(山东省科学院)、澳门…

科大讯飞语音转写demo go语言版

上传了一个语音文件,识别效果。 package audioimport ("bytes""crypto/hmac""crypto/md5""crypto/sha1""encoding/base64""encoding/json""fmt""io/ioutil""net/http"…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢? 很多小伙伴在面试时都被问到过这个问题,刷到过这个题的同学马上就能回答出来:“利用三级缓存”。面试官接着追问:“哪三级缓存呢?用两级行不行呢?” 这时候如果没有深入研究…

Vs2022+QT+Opencv 一些需要注意的地方

要在vs2022创建QT项目,先要安装一个插件Qt Visual Studio Tools,根据个人经验选择LEGACY Qt Visual Studio Tools好一些,看以下内容之前建议先在vs2022中配置好opencv,配置方式建议以属性表的形式保存在硬盘上。 设置QT路径 打开v…

清华计算几何-算法LowBound和ConvexHull(凸包)-GrahamScan

算法复杂度最低界限LowBound 算法求解复杂度是否存在一个最低界限,有时候想尽一切办法优化一个算法,去优化其复杂度,比如 清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test-CSDN博客 清华计算几何-ConvexHull(凸包)-求极边_计…

DeFi革命:揭秘去中心化金融的核心技术与实操指南

目录 DeFi(去中心化金融)综述 基本特点 第一,DeFi 是无许可的金融 第二,DeFi 是无门槛的金融 第三,DeFi 是无人驾驶的金融 典型商业模式 闪电贷 MakerDAO 面临的挑战 DeFi技术要点 椭圆曲线签名 EIP-712:…

模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域

Vue.js 是一个流行的 JavaScript 框架,因此,确保其组件按预期工作至关重要:有效,更重要的是,可靠。模拟依赖项是最有效的测试方法之一,我们将在本文中发现。 模拟依赖项的必要性 模拟依赖项是一种对测试施加…

个人定制化形象生成,FaceChain最新模型部署

FaceChain是阿里巴巴达摩院推出的一个开源的人物写真和个人数字形象的AI生成框架。 FaceChain利用了Stable Diffusion模型的文生图功能,并结合人像风格化LoRA模型训练及人脸相关感知理解模型,将输入的图片进行训练后推理输出生成个人写真图像。 FaceCh…

Live555源码阅读笔记:哈希表的实现(C++)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)

一、中序后序序列构造二叉树 题目: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,…

使用SpringEvent解决WebUploader大文件上传解耦问题

目录 前言 一、SpringEvent涉及的相关组件 1、 事件(Event) 2、事件监听器 3、事件发布器 二、WebUploader大文件处理的相关事件分析 1、事件发布的时机 2、事件发布的代码 三、事件监听器及实际的业务处理 1、文件上传处理枚举 2、文件上传监…

Python+selenium web自动化测试知识点合集2

选择元素 对于百度搜索页面,如果我们想自动化输入“selenium”,怎么做呢? 这就是在网页中,操控界面元素。 web界面自动化,要操控元素,首先需要 选择 界面元素 ,或者说 定位 界面元素 就是 先…

C++客户端Qt开发——界面优化(QSS)

1.QSS 如果通过QSS设置的样式和通过C代码设置的样式冲突,则QSS优先级更高 ①基本语法 选择器{属性名:属性值; } 例如: QPushButton {color: red; } 1>指定控件设置样式 #include "widget.h" #include "ui_widget.h&qu…

qt--做一个拷贝文件器

一、项目要求 使用线程完善文件拷贝器的操作 主窗口不能假死主窗口进度条必须能动改写文件大小的单位(自适应) 1TB1024GB 1GB1024MB 1MB1024KB 1KB1024字节 二、所需技术 1.QFileDialog 文件对话框 QFileDialog也继承了QDialog类,直接使用静态…

Redis缓存数据库进阶——Redis与分布式锁(6)

分布式锁简介 1. 什么是分布式锁 分布式锁是一种在分布式系统环境下,通过多个节点对共享资源进行访问控制的一种同步机制。它的主要目的是防止多个节点同时操作同一份数据,从而避免数据的不一致性。 线程锁: 也被称为互斥锁(Mu…

Robot Operating System——内部审查(Introspection)Service

大纲 introspection_service检验Parameter值和类型修改内部审查(Introspection)功能的状态完整代码 introspection_client完整代码 测试参考资料 在ROS 2(Robot Operating System 2)中,内部审查(Introspect…

【中项】系统集成项目管理工程师-第7章 软硬件系统集成-7.3软件集成

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…