SSH 握手抱怨缺少主机密钥

2023-12-20

我正在尝试连接到远程主机并检查文件是否存在 在这个阶段,我只是尝试连接,但出现错误:

2017/08/01 18:16:39 unable to connect: ssh: handshake failed: ssh: required host key was nil

我试图找出其他人是否也有和我一样的问题,但我就是找不到。

我知道我需要在这个过程中以某种方式检查known_hosts,但我只是不知道如何......

    var hostKey ssh.PublicKey
    // A public key may be used to authenticate against the remote
    // server by using an unencrypted PEM-encoded private key file.
    //
    // If you have an encrypted private key, the crypto/x509 package
    // can be used to decrypt it.
    key, err := ioutil.ReadFile("/home/user/.ssh/id_rsa")
    if err != nil {
        log.Fatalf("unable to read private key: %v", err)
    }

    // Create the Signer for this private key.
    signer, err := ssh.ParsePrivateKey(key)
    if err != nil {
        log.Fatalf("unable to parse private key: %v", err)
    }

    config := &ssh.ClientConfig{
        User: "user",
        Auth: []ssh.AuthMethod{
            // Use the PublicKeys method for remote authentication.
            ssh.PublicKeys(signer),
        },
        HostKeyCallback: ssh.FixedHostKey(hostKey),
    }

    // Connect to the remote server and perform the SSH handshake.
    client, err := ssh.Dial("tcp", "host.com:22", config)
    if err != nil {
        log.Fatalf("unable to connect: %v", err)
    }
    defer client.Close()
}

我建议使用knownhosts子包

import knownhosts "golang.org/x/crypto/ssh/knownhosts"

...

hostKeyCallback, err := knownhosts.New("/Users/user/.ssh/known_hosts")
if err != nil {
    log.Fatal(err)
}

...

config := &ssh.ClientConfig{
    User: "user",
    Auth: []ssh.AuthMethod{
        // Use the PublicKeys method for remote authentication.
        ssh.PublicKeys(signer),
    },
    HostKeyCallback: hostKeyCallback,
}

这样您就可以避免自己解析known_hosts...

hth,

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

SSH 握手抱怨缺少主机密钥 的相关文章

  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何同时使用 LoadHTMLGlob 和 LoadHTMLFiles

    我想要来自不同子目录的分隔符逻辑模板templates文件夹 下面是我的templates文件夹 templates authentication login gohtml logout gohtml index gohtml profil
  • 如何仅在测试时允许一个包访问另一个包的未导出数据?

    In Go 编程语言 第 11 2 4 节 有一个外部测试访问的示例fmt isSpace 通过声明IsSpace in fmt s export test go文件 这似乎是完美的解决方案 所以这就是我所做的 a a go package
  • 在 Gorilla Mux 中嵌套子路由器

    我一直在使用gorilla mux https github com gorilla mux满足我的路由需求 但我注意到一个问题 当我嵌套多个子路由器时它不起作用 这是示例 func main r mux NewRouter StrictS
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • ssh:连接到主机 bitbucket.org 端口 22:连接超时致命

    整个错误是 ssh connect to host bitbucket org port 22 Connection timed out fatal The remote end hung up unexpectedly 当我从位于不同服务
  • 解压文件的简单方法

    有没有一种简单的方法可以用 Go 解压文件 现在我的代码是 func Unzip src dest string error r err zip OpenReader src if err nil return err defer r Cl
  • golang无法启动调试,显示未找到框架CoreFoundation

    我使用的是 Macbook pro m1 在数据迁移或更新到 monterey 后 不确定是什么原因导致的 golang 似乎无法调试或 go list 编译 我尝试重新安装 更新 golang 结果是一样的 Go版本 1 17 3 dar
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 当使用 k8s.io/client-go 库的 kubernetes 部署发生更改时获得通知的最佳方式是什么?

    Context 我正在编写一个使用k8s io client go https github com kubernetes client go 图书馆 这里是 godocs https godoc org k8s io client go
  • 如何使用ssh直接连接远程docker容器

    我想直接使用 ssh 连接到远程运行的 Docker 容器 通常我可以 ssh i privateKey user host docker ps which will list all running containers docker e
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • JSch:如何使用 ssh 密钥 ssh 到服务器

    我想从另一个 ssh 服务器后面 ssh 进入服务器 网关服务器需要用户名 密码 我可以做到这一点 我正在使用隧道进入下一台服务器 但这需要only一个 ssh 密钥 我已经通过 PuTTY 生成了密钥 因此它存在于我的用户名中 但我不确定
  • 关于编写惯用的 Golang 的建议

    我正在掌握 Golang 的做事方式 首先是一些示例代码 package main import log os func logIt s string f os OpenFile errors log os O RDWR os O CREA
  • 如何对结构切片而不是切片结构进行范围调整

    稍微玩了一下 Go HTML 模板后 我发现的所有循环模板中对象的示例都是将切片结构传递给模板 有点像这个示例 type UserList struct Id int Name string var templates template M
  • Golang const unsafe.Sizeof

    不明白为什么我可以做到 const OK uint64 0 const OK int unsafe Sizeof uint64 0 但不是这个 const NOK binary Size uint64 0 它的解释在规格 https gol
  • 如何将长 Go 模板函数拆分为多行?

    我有一个很长的printf调用 Go 模板 例子 printf mongodb s s s s authSource admin replicaSet s readPreference nearest w majority Values r
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • golang中如何将相对路径解析为绝对路径?

    节点中是否有类似 path resolve 的API 或者有什么东西可以做同样的事情 例如 nodejs代码 path resolve sample sh 应该得到 home currentuser sample sh 解决 表示用户主目录

随机推荐

  • 创建带有图像行的 UI 滚动视图

    我想在滚动视图上显示数据库中存在的图像 此外 我想在一行中显示 4 个图像 然后在下一行中显示下 4 个图像 依此类推 最初 滚动视图将仅显示 2 行 垂直滚动后 用户将看到将能够滚动浏览数据库中存在的所有图像 任何人都可以建议任何合适的措
  • 列表视图内的可点击链接

    列表视图可点击链接问题 我在 getView 中使用以下代码在列表视图中生成可单击的链接 myTextView setMovementMethod LinkMovementMethod getInstance String linkText
  • PDF 到 Pandas 数据框

    就在我以为我终于明白了的时候 真是个新手 我正在尝试从 PDF 表格的一列中获取数字列表 第一步我想转换为 Panda DF pip install tabula py pip install PyPDF2 import pandas as
  • 我无法在 RStudio 中将文档转换为 PDF

    我必须使用 RStudio 来编写 PDF 格式的报告 但是当我尝试将文档与 Rmarkdown 中的块中所需的包进行编写时 它向我显示以下错误 tlmgr search file global multirow sty tlmgr Rem
  • Python 类的意外行为

    我正在 OOP 中开发一个纸牌游戏只是为了练习 到目前为止我所写的内容中有一些奇怪的行为 当我使用clear方法清空双手时 会发生的是个别双手显示它们是空的 但是当我查看双手变量 显示双手 时 它们不是空的 我的问题是为什么 哈哈 我将把代
  • 如何管理不是通过类型下载的类型定义文件?

    我有一个Angular我正在使用的应用程序npm and typings管理拉下我的类型定义文件 d ts for TypeScript 不过我有几个 d ts不存在的文件typings并且可以手动滚动或从备用源手动下载 从项目结构的角度来
  • 映射类型以使所有属性成为必需

    TypeScript 类可以具有可选属性和必需属性 class SomeClass foo string bar string baz string qux string The Partial
  • Android Market 搜索引擎如何工作? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何提高应用在 Android Market 搜索结果中的排名 这些应用程序似乎没有按下载量排序 Edit 这个问题的范围仅限于使用 Android
  • 在 iPhone 上拖动 UIScrollView 时,OpenGL ES 视图中的动画冻结

    我有一个动画透明 OpenGL ES 子视图 Apple 模板 EAGLView 类的修改 它绘制一个旋转球体 就像 Apple 的示例一样 CADisplayLink 用于可用的设备 在同一屏幕上 有一个包含可以选择的 UIButtons
  • 如何为默认值“现在”的日期字段建立索引?

    我需要添加日期字段类型 以便文档将当前系统日期时间作为默认值 我正在使用 Elasticsearch 7 5 PUT myindex mappings properties create date type date format yyyy
  • 我不明白为什么我的 JavaScript 文件在链接时不会显示

    我不明白这里出了什么问题 而且我没有从 Javascript 文件中得到任何输出 我正在尝试使用 src 以便能够在索引文件之外键入我的 javascript 文件 这只是打印 html 文件 A test header 中的标题 而不打印
  • 如何使用 Teams JS SDK v2 向 Microsoft Teams 中的用户或频道发送大文本消息?

    我目前正在使用 Microsoft Teams JavaScript SDK v2 TeamsJS 开发一个应用程序 并且正在努力寻找一种向特定用户或频道发送大文本消息的方法 我已成功使用 selectPeople API 使用户能够从列表
  • 什么是 Cache-Control: private?

    当我访问时chesseng herokuapp com http chesseng herokuapp com我得到一个响应标头 如下所示 Cache Control private Connection keep alive Conten
  • 如何在docker中运行无头浏览器?

    我正在使用无头浏览器构建一个爬虫 但现在我想对我的应用程序进行 dockerize 我已经在我的 docker 映像中安装了 chrome 但在运行脚本时它会抛出错误 启动Chrome js const chromeLauncher req
  • @Transactional 与 JPA 和 Hibernate 有什么用?

    我正在学习如何使用 JPA 和 Hibernate 以及 MySQL 数据库创建 REST API 并且我看到了这个 Transactional 注释 有人能解释一下这个注释有什么用吗 例如我有这个简单的 DAO 类 Repository
  • 将 csv 导入到 xlsx python

    我正在尝试将 csv 文件中的一些数据放入现有的 Excel 文件中 我现有的 Excel 文件包含图像 而 xlrd 无法获取图像 我尝试使用 xlsxwriter 但它无法附加到现有的 xslx 我找到的唯一解决方案是使用 openpy
  • AppDelegate 文件适合 MVC 中的什么位置?

    我正在学习 iPhone iPad 编程 我相信我理解了MVC的概念 我遇到的困难是理解普通 iPhone iPad 应用程序中的某些文件如何适合 MVC 当您使用 基于视图的应用程序 模板创建新应用程序时 将创建 AppDelegate
  • Python pandas - 如果该项目在列表中,则新列的值

    我想在 pandas 数据框中创建一个新列 第一列包含国家 地区名称 该列表包含我感兴趣的国家 例如欧盟 新列应指示数据框中的国家 地区是否在列表中 以下是代码的简化版本 import pandas as pd import numpy a
  • 如何求一系列数字的最小公倍数?

    给定一个由两个数字组成的数组 让它们定义一系列数字的开始和结束 例如 2 6 表示范围 2 3 4 5 6 我想编写 javascript 代码来查找范围的最小公倍数 我下面的代码仅适用于小范围 而不是类似的 1 13 即范围 1 2 3
  • SSH 握手抱怨缺少主机密钥

    我正在尝试连接到远程主机并检查文件是否存在 在这个阶段 我只是尝试连接 但出现错误 2017 08 01 18 16 39 unable to connect ssh handshake failed ssh required host k