在 SSH.NET 中检查 SFTP/SSH 指纹

2023-11-23

我目前正在创建一个 SSIS 包,我需要连接到安全服务器来复制一些文件,并且我想通过服务器发送的公钥指纹来验证连接。

我对这方面不太熟悉,我是否总是期望连接时会发送指纹?

该软件包之前使用了WinSCP,并且指纹以以下格式烘焙到代码中:ssh-dss 1024 [hex representation]。我假设此格式取自 PuTTY,因为这就是我在连接到新服务器时看到的格式,并且要求我进行验证。 WinSCP 按原样接受并处理验证。

我打算切换到 SSH.NET,它的机制要求我手动检查指纹。我可以仅根据十六进制验证连接,还是还需要检查密钥长度和使用的算法?


您可以仅基于十六进制来完成此操作 - 首先您需要编写(或复制/使用)一个实用程序方法来将十六进制字符串转换为字节数组(这取决于十六进制字符串的格式) - 示例下面用于转换由冒号分隔的字符串(例如“1d:c1:5a:71:c4:8e:a3:ff:01:0a:3b:46:17:6f:e1:52”)

public static byte[] ConvertFingerprintToByteArray( String fingerprint )
{
    return fingerprint.Split( ':' ).Select( s => Convert.ToByte( s, 16 ) ).ToArray();
}

然后您只需附加到HostKeyReceived事件的SftpClient object.

SftpClient sftpClient = new SftpClient( Hostname, Username, Password );
sftpClient.HostKeyReceived += delegate ( object sender, HostKeyEventArgs e )
{
    var b = ConvertFingerprintToByteArray(
        "1d:c1:5a:71:c4:8e:a3:ff:01:0a:3b:46:17:6f:e1:52" );
    if( e.FingerPrint.SequenceEqual( b ) )
        e.CanTrust = true;
    else
        e.CanTrust = false;
};

如果此检查失败,则 SSH.NET 将抛出一个SshConnectionException– 带有一条消息“密钥交换协商失败”.

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SSH.NET 中检查 SFTP/SSH 指纹 的相关文章

  • Couchbase v6.0:更新文档内容而不重置文档过期(TTL)值

    我正在使用 Net Couchbase SDK CouchbaseNetClient Package 创建一个新文档 并在执行此操作时设置该文档的到期值 到期 TTL 值设置正确并且工作正常 问题陈述 创建文档后 我需要更新我使用 N1QL
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 我应该如何缓冲绘制的矩形以提高性能(C#/.NET/WinForms/GDI+)

    我在做什么 我正在开发一个 C NET 4 7 2 WinForms 应用程序 它使用以下命令在表单上绘制大量填充矩形Graphics FillRectangle https learn microsoft com en us dotnet
  • 捕获特定的 WebException (550)

    假设我创建并执行一个System Net FtpWebRequest 我可以用catch WebException ex 捕获此请求引发的任何与 Web 相关的异常 但是 如果我有一些逻辑只想在由于以下原因引发异常时执行 550 file
  • 真的不可能使用返回类型重载吗?

    我用两种方法在MSIL中制作了一个小DLL float AddNumbers int int int AddNumbers int int 你们中有些人可能知道 MSIL 允许您创建具有相同参数的方法 只要您具有不同类型的返回类型 称为返回
  • 如何从 ReadOnlySpan 复制到 Array

    我的班级有一个财产public byte Location get new byte 30 我希望能够从 a 中填充它ReadOnlySpan
  • 实体框架代码首先保存后不延迟加载

    我的数据库中有一个查找表和一个数据表 我将使用性别和人物作为例子 假设性别表如下所示 Id Code 1 Male 2 Female 人员表如下所示 Id Name GenderId 1 Bob 1 2 Jane 2 我首先在 EF 代码中
  • 如何在Web网格的列中编写IF条件

    我在 WEB GRID 列中创建 if 条件时遇到错误 所以 请帮助改进我的代码并解决我的问题 grid Column Status format item gt
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 如何在 wpf 应用程序的代码隐藏中创建集合视图源

    我有以下代码 public partial class MainWindow Window public MainWindow InitializeComponent var entities new DemoEntities var de
  • 检查 DBNull 会引发 StrongTypingException

    我正在使用数据集从数据库中提取数据 一行中的一个字段是NULL 我知道这个 但是 以下 vb net 代码会抛出StrongTypingException 在数据集设计器中自动生成的 get SomeField 方法中 If Not IsD
  • 有没有办法在不重新编译的情况下覆盖 .NET Windows 服务名称?

    我有一个 Windows 服务可执行文件 我知道它是用 NET 编写的 我需要将其安装在不同的服务名称下以避免冲突 安装无论如何都不提供指定服务名称 如果我只能访问二进制文件 当我使用 installutil 安装它时是否可以覆盖服务名称
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 在.rdlc报告的底部设置一个文本框

    我在 rdlc 报告中使用 tablix 有一个文本框 其中包含文本 签名 我想将此文本框放置在报告最后一页的底部 就在页脚之前 我已经用谷歌搜索了这个解决方案 但没有找到满意的结果 我的环境是VS2010 framework 4 0 有什
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ

随机推荐

  • Hadoop JobConf 类已弃用,需要更新示例

    我正在编写 hadoop 程序 我真的不想使用已弃用的类 在网上的任何地方我都找不到更新的程序 org apache hadoop conf 配置 班级 代替 org apache hadoop mapred JobConf class p
  • 无法生成类,因为找不到具有复杂类型的顶级元素

    我正在尝试使用 XSD EXE 工具从 xsd 文件创建一个类 但由于某种原因我收到此错误 警告 无法生成类 因为没有顶级元素 发现复杂类型 我环视了堆栈 发现我可以在复杂类型元素上放置一个类型 但我似乎无法让我工作 这是 xsd 文件
  • 使用应用函子 |@| 进行 Scalaz 验证不工作

    我正在尝试在我的应用程序中使用 Scalaz 7 Validation 但是 我在获取时遇到问题 应用函子来合并我的失败 这是我的代码 type ValidationResult ValidationNel String Unit def
  • 具有连续彩虹色的热图

    首先 我不得不说 我在 stackoverflow 和其他地方读到了很多关于 heatmap 和 ggplot2 的帖子 但我的问题还没有解决 我有以下数据集 Var1 Var2 value 1 197 5 197 5 0 2 192 5
  • 使用 Google OAuth API 检索出生日期

    有谁知道如何通过 Google OAuth api 检索 D O B 我可以通过将范围设置为来获取其他信息 例如姓名 电子邮件 性别https www googleapis com auth userinfo profile 但我无法用这个
  • Python 子进程模块不会在段错误上返回标准输出

    我正在从 Python 运行 C 可执行文件 该可执行文件有时会出现段错误 当出现段错误时 子进程模块不会在 stdout 或 stderr 中返回任何内容 示例代码 import subprocess proc subprocess Po
  • Python:所有子进程调用上的“FileNotFoundError”

    使用 Windows 7 Python 3 5 1 import subprocess subprocess check output echo hello 引发错误 Traceback most recent call last File
  • Android 应用程序中的动态 ListView

    是否有一个工作示例演示如何在 ListView 中动态追加附加行 例如 您正在从中提取 RSS 提要 不同领域 然后显示前 10 项 在 ListView 中 当你有 中运行的其他线程 后台继续拉动提要 你滚动并到达底部 列表并单击按钮 查
  • java换行符

    我想知道为什么我没有得到预期的结果 String t 1302248663033 t replaceAll n System out println t 输出是 1302248663033 所以我想知道为什么 n仍然在那里 有人知道吗 n
  • 数组和指针之间的区别[重复]

    这个问题在这里已经有答案了 昨天我在使用自制的 strcpy 函数时遇到了一些麻烦 虽然现在可以了 但我有点困惑 char a Hello World Works char b Hello World Works also strcpy a
  • 如何在 C++ 中快速安全地从文本文件中读取超长行?

    有一个 6 53 GiB 的大文本文件 它的每一行可以是数据行或注释行 注释行通常很短 少于 80 个字符 而数据行包含超过 200 万个字符 并且长度可变 考虑到每个数据行都需要作为一个单元来处理 是否有一种简单的方法可以在 C 中安全快
  • Matplotlib坐标变换

    我试图理解这段代码片段 def add inset ax rect args kwargs box ax get position inax position ax transAxes transform rect 0 2 infig po
  • 如何清除内存缓存?

    我使用 MemoryCache 类创建了一个缓存 我向其中添加了一些项目 但是当我需要重新加载缓存时 我想先清除它 最快的方法是什么 我应该遍历所有项目并一次删除它们还是有更好的方法 Dispose现有的 MemoryCache 并创建一个
  • 如何使用mysql将视频存储在数据库中?

    我尝试使用 MySQL 将视频文件存储到数据库中 但我不知道如何存储 视频文件存入数据库 我尝试执行以下查询 但没有成功 CREATE TABLE GAME GAME ID INTEGER NOT NULL PRIMARY KEY GAME
  • Javascript:获取当前页面当前源

    我有 HTML 我需要获取该 html 的页面源 document documentElement outerHTML or ajax async true type GET cache false url window location
  • 以编程方式设置控制台窗口大小和位置

    我想在桌面上打开多个控制台程序 这是我每次都必须做的事情 1 右键单击桌面 gt 屏幕分辨率 gt 检测 4个显示器 2 打开 16 个不同的控制台程序 每个屏幕 4 个 3 单击所有窗口以获得正确的 Z 顺序 3 右键单击任务栏 gt 显
  • 获取访问您网站的每个用户的 IP 地址和位置

    如何通过 Asp Net 获取您网站的每个网站访问者的 IP 地址和位置 Thanks 要获取用户的IP 请使用 Request UserHostAddress 您可以使用此网络服务来获取他们的地理位置 http iplocationtoo
  • 返回字符串行号的查找命令

    我有一堆文件组织成目录 所有这些都是文本文件 c c 我正在尝试理解这段代码 我需要查看许多变量的声明 如何使用 find 命令在 ubuntu linux 中使用 Find 命令获取确切位置 带行号的文件名 或者有没有任何图形工具可以做同
  • 最终减少的策略

    我正在尝试实现一个 OpenCL 版本来减少浮点数组 为了实现这一目标 我采用了在网上找到的以下代码片段 kernel void sumGPU global const double input global double partialS
  • 在 SSH.NET 中检查 SFTP/SSH 指纹

    我目前正在创建一个 SSIS 包 我需要连接到安全服务器来复制一些文件 并且我想通过服务器发送的公钥指纹来验证连接 我对这方面不太熟悉 我是否总是期望连接时会发送指纹 该软件包之前使用了WinSCP 并且指纹以以下格式烘焙到代码中 ssh