尝试通过 SSH 连接到远程主机时出错

2024-03-29

我正在尝试连接到远程主机以发出命令,但在运行代码时收到以下错误消息:

ssh:握手失败:ssh:没有通用的密钥交换算法;客户提供:[[电子邮件受保护] /cdn-cgi/l/email-protectionecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1],服务器提供:[diffie-hellman-group1-sha1]恐慌:运行时错误:无效的内存地址或 nil 指针取消引用 [信号SIGSEGV:分段违规代码=0x1 addr=0x10 pc=0x759836]

这是我正在使用的代码:

func (SSHClient *SSH) Connect(mode int) {
    var SSHConfig *ssh.ClientConfig
    var auth []ssh.AuthMethod

    if mode == CERT_PUBLIC_KEY_FILE {
        auth = []ssh.AuthMethod{SSHClient.readPublicKeyFile(SSHClient.Cert)}
    }

    SSHConfig = &ssh.ClientConfig{
        User:            SSHClient.User,
        Auth:            auth,
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
        Timeout:         time.Second * DEFAULT_TIMEOUT,
    }

    SSHConfig.Config.Ciphers = append(SSHConfig.Config.Ciphers, "diffie-hellman-group1-sha1")

    client, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", SSHClient.IP, SSHClient.Port), SSHConfig)

    if err != nil {
        fmt.Printf("ERROR - While trying to Dial to the host %s with error: %s", SSHClient.IP, err.Error())
        return
    }

    session, err := client.NewSession()
    if err != nil {
        fmt.Printf("ERROR - While trying to create a new session on host %s with error: %s", SSHClient.IP, err.Error())
        client.Close()
        return
    }

    SSHClient.session = session
    SSHClient.client = client
}

关于如何解决这个问题有什么想法吗?

提前致谢。


问题是......服务器只愿意通过 diffie-hellman-group1-sha1 进行对话

And:

  • golang/go 问题 2903 https://github.com/golang/go/issues/2903: ssh: 添加 diffie-hellman-group1-sha1, 已于 6 天前关闭
  • golang/go/问题 17230 https://github.com/golang/go/issues/17230: 提议:x/crypto/ssh:支持来自 RFC 4419 的 Diffie-Hellman Group Exchange,现已实施。

所以你需要为你的客户提供一个叉子golang.org/x/crypto/ssh, like 无聊工程师/ssh https://github.com/bored-engineer/ssh/, where 提交 39a91b https://github.com/bored-engineer/ssh/commit/39a91b2f99659c746b120025dff1a4fb46b380b7 and 提交 fe5e4ff https://github.com/bored-engineer/ssh/commit/fe5e4ff9a3592bf7c231b4ed160298c8c4a04c57确实添加了对 diffie-hellman-group1-sha1 的支持。
或者安装最新的golang/crypto https://github.com/golang/crypto, 包括提交 57b3e21 https://github.com/golang/crypto/commit/57b3e21c3d5606066a87e63cfe07ec6b9f0db000.

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

尝试通过 SSH 连接到远程主机时出错 的相关文章

  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操
  • Delphi 的免费加密库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为 Delphi 2010 寻找一个免费且最新的加密库 该库实现 RSA 和 AES Rijnda
  • 如何在将数据发送到 Firebase 数据库之前对其进行加密?

    我正在使用 Firebase 实时数据库制作聊天应用程序 我知道 Firebase 非常安全 只要您的规则正确 但我自己可以阅读使用我的应用程序的人的所有聊天记录 我想阻止这种情况 为此我需要一种解密和加密方法 我尝试使用凯撒解密 但失败了
  • 如何在 Visual Studio Code 中使用 Delve 调试器进行远程调试

    我已经问过了 得到了很好的答复answer https stackoverflow com questions 39058823 how to use delve debugger in visual studio code用于使用 del
  • 我想在后端验证来自 golang 前端的时区

    前端在注册期间发送时区以及其他用户详细信息 我需要在时区上放置一个验证器来进行 api 测试 时区数据的格式为 GMT 10 00 Hawaii GMT 08 00 Pacific Time US amp Canada 我所做的是定义数组中
  • 从 []byte 到 char*

    我想包装一个 C 函数 它需要一个char 指向非空字节缓冲区 的第一个元素 我正在尝试使用 CGo 将其包装在 Go 函数中 以便我可以将其传递给 byte 但我不知道如何进行转换 C 函数签名的简化版本是 void foo char c
  • 检查值是否实现接口的说明

    我读过 Effective Go 和其他类似这样的问答 golang接口合规性编译类型检查 https stackoverflow com questions 17994519 golang interface compliance com
  • 为什么奇数的切片容量与偶数的切片行为不同

    我注意到 当容量为奇数时 切片的容量会以不同的方式表现 更具体地说 当向切片添加元素时 切片的容量为doubled当原始容量为偶数时 但当原容量为奇数时 容量为增加一 然后加倍 例子 s make int 28 28 s append s
  • Go io.Pipe 的缓冲版本

    有缓冲版本吗io Pipe https golang org pkg io Pipe 在标准库或第三方库中 在我推出自己的库之前 上下文 我正在尝试使用这个解决方案 https stackoverflow com a 36229262 15
  • Paramiko ValueError“p 的长度必须恰好为 1024、2048 或 3072 位”

    我正在尝试使用 Python 脚本连接 SFTP 由于 p 错误 我无法连接 import paramiko client paramiko SSHClient client load system host keys client con
  • 使用 AesManaged“填充无效且无法删除”

    我正在尝试使用 AesManaged 进行简单的加密 解密 但在尝试关闭解密流时不断出现异常 这里的字符串被正确加密和解 密 然后在 Console WriteLine 打印正确的字符串后 我收到 CryptographicExceptio
  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo
  • 用 C++ 解密文件,该文件使用 openssl -aes-128-cbc 加密

    我正在尝试用 C 解密文件 该文件使用以下命令加密 openssl enc nosalt aes 128 cbc pass pass test in test txt out test enc txt p 控制台显示key 098F6BCD
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 是否有一种加密技术可以将 8 位数字变成 10 或 11 位或更少的数字?

    我见过的许多加密技术都可以轻松加密一个简单的 8 位数字 如 12345678 但结果通常是 8745b34097af8bc9de087e98deb8707aac8797d097f 编造的 但你明白了 有没有办法加密这个 8 位数字 但生成
  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • 无论如何要解密加密的sql server存储过程吗?

    我有几个 ms sql server 2000 存储过程 很久以前就被前雇员加密了 一切都很好 直到我们需要稍微改变一下 有什么方法可以检索源代码吗 或者重写是唯一的选择 多谢 或者免费 谷歌是你的朋友 http searchsqlserv
  • Golang GAE - 小胡子结构中的 intID

    这是一个Example https www dropbox com sh ur2ws1jnik6euef PjVJSwDTUc Blog Golang zip该应用程序的 关键代码在 golang code handler handler
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 如何在 Go 中将环境变量传递给测试用例

    在为 Go 编写测试用例时 传递需要提供给测试的环境变量的标准方法是什么 例如 我们不想在测试用例的源代码中嵌入密码 处理这个问题最标准的方法是什么 我们让测试用例寻找配置文件吗 还有别的事吗 看来我偶然发现了答案 将其添加到测试用例中可以

随机推荐

  • 反应路由器中的查询字符串

    我正在尝试使用查询字符串设置路由路径 内容如下 www mywebsite com results query1 query1 query2 query2 query3 query3 我会像这样过渡到 结果 组件
  • 锚链接在 iPad 上无法正常工作

    我们在 iPad 上遇到了固定元素的问题 您可以在这里查看我们的布局 http cibology edoardobiasini it http cibology edoardobiasini it The position fixed右侧的
  • 十六进制浮点文字中的十六进制“E/e”与指数形式的“E/e”如何区分?

    在 C 中 如果我想要一个浮点文字 x 为十六进制形式并具有指数值 它将表示为 float x 0X2aE 10 其中0x用于表示它是十六进制的 2a用于表示十六进制字符 E 10用于表示十的10次方的数字 然而 编译器是否知道它不是 2a
  • 为什么当我在 switch 语句中为每个枚举常量都有情况时,我仍然必须提供默认值吗? [复制]

    这个问题在这里已经有答案了 我试图在 Java 中声明一个枚举 并在 switch 语句中使用该类型的变量 其中涵盖了该类型枚举常量的所有可能情况 enum MyEnum FOO BAR private static void test M
  • 按版本对字符串列表进行排序

    我有一个字符串列表 每个字符串都遵循模式 Path UpdateTo Version Order 我需要对列表进行排序 使最低版本号位于顶部 如果存在多个具有相同版本号的文件 则附加一个可选的顺序参数 如果任何字符串上存在订单 那么它应该出
  • 以 cm 为单位调整图像大小 C#

    我有一个要求 要求提供 10 X 6 88 厘米的图像 我知道我不能简单地将厘米转换为像素 因为一个像素大小取决于用户显示分辨率 我想知道是否有办法调整图像大小以达到该尺寸 以厘米为单位 我还需要保留图像扩展名 例如 无法将其转换为 pdf
  • 在hive中如何将字符串转换为数组?

    我使用的是蜂巢1 1 hive gt select country from releases limit 1 OK us ca fr 目前 国家在 hive 中是字符串类型 如何将其转换为数组 String 我尝试了下面的方法 但它抛出错
  • Spring MVC 中的嵌套异常处理

    我收到以下错误 org springframework web util NestedServletException 请求处理失败 嵌套异常是 java lang NullPointerException 为了在控制器中处理这个问题 我使
  • 如何将钩子添加到 uberjar 进程中(使用 lein 构建)

    我想向 uberjar 进程添加一个钩子 具体示例是将 maxmind geoip dat 文件下载到资源文件夹中 以便每次部署时都会将更新版本捆绑到 jar 中 示例 建议表示赞赏 谢谢 我建议创建一个调用 uberjar 的自定义 le
  • 将查询结果从 BigQuery 导出到 Postgres

    我正在尝试导出 BigQuery 中的查询结果 并将数据导入 Postgres 数据可能多达 2 5 亿条记录 约 26Gb 选项1 将查询结果保存到临时表 将表导出为 csv 批量更新插入到 postgres 这会很慢 选项2 以某种方式
  • EhCache和数据库刷新

    我正在使用 Spring 和 ehcache 使用查询将数据填充到缓存中 此过程必须每 10 分钟发生一次 有配置可以设置吗 提前致谢 通常 ehCache 将用于给出一个 ttl 以自动使缓存失效 根据我从您的问题中收集到的信息 您要求每
  • 需要在SQL Server 2008中使用CTC来实现业务需求

    对小规模的实施会有很大的帮助SP以满足以下要求 业务规则是 EndDate 应该是下一个规则的开始日期 否则规则不应该是 视为连续的 并将被视为其他规则系列 如 在下面的示例中显示有两个系列 因为第四个系列 它已经打破了记录 RuleId
  • 如何使用 Fish shell 设置宝石路径?

    如何使用 Fish shell 正确设置宝石路径 sanoy nice system D c h bellevue gt gem 安装包 警告 您的 PATH 中没有 home sanoy gem ruby 2 2 0 bin gem 可执
  • 如何使用java/spring boot读取Vault kv

    我正在尝试弄清楚如何使用Hashicorp s Vault与弹簧靴 最初 我尝试遵循该指南 https spring io guides gs vault config scratch https spring io guides gs v
  • Xcode 8 不显示整个 NSLog 输出

    今天升级到 Xcode 8 GM 后 我注意到 NSLog 没有将整个日志消息打印到控制台 当处理下载大量信息的 API 时 这一点尤其明显 例如 REST API 从数据库下载所有产品 它只显示第一个产品的前 30 个键 其余信息被裁剪
  • 在 Ruby 中实现贝叶斯分类器?

    我想实现一个简单的贝叶斯分类系统来对短信进行基本的情感分析 欢迎在 Ruby 中实施的实用建议 除贝叶斯之外的其他方法的建议也将受到欢迎 Ilya Grigorik 在这篇博客文章中对这个问题有一个很好的答案贝叶斯分类器 http www
  • 为什么一个整型变量在赋值给另一个变量后仍然可以使用?

    我试图了解 Rust 中的所有权是如何运作的 考虑以下简单示例 let u own 3432 let d own u own println u own 编译器不会抱怨 尽管所有权来自值3432已移至d own 最后一条语句是println
  • OpenCV中求已知纵横比的矩形的距离

    我正在开发一个 OpenCV 程序来查找从相机到具有已知长宽比的矩形的距离 求出从前向视图看到的到矩形的距离效果很好 实际距离与计算出的距离非常接近 wtarget pimage d c 2 ptarget tan fov 2 Where
  • AngularJS - $cancelRequest 在 $resource 中不可用

    我正在尝试触发中止请求 但是我没有收到 cancelRequest对象的结果 resource 但是 我能够得到 promise and resolved对象 为什么会发生这种情况 我怎样才能得到这个 cancelRequest PS 我正
  • 尝试通过 SSH 连接到远程主机时出错

    我正在尝试连接到远程主机以发出命令 但在运行代码时收到以下错误消息 ssh 握手失败 ssh 没有通用的密钥交换算法 客户提供 电子邮件受保护 cdn cgi l email protectionecdh sha2 nistp256 ecd