Bitbucket 管道 SSH 密钥设置:无法获取主机指纹

问题描述 投票:0回答:1

我正在尝试为我的管道设置 ssh 密钥,并使用 scp 部署管道将构建步骤的工件文件发送到嵌入式设备。我在存储库设置中生成了 ssh 密钥,并将公钥复制到嵌入式设备的authorized_keys 文件中,如下 https://support.atlassian.com/bitbucket-cloud/docs/set-up-pipelines-ssh-keys-在 Windows 上/。然而,当我尝试获取已知的主机指纹(使用嵌入式设备的 IP 地址)时,它加载了一会儿,但没有任何反应。没有错误消息或获取任何指纹。 scp 部署管道也会失败,因为主机密钥验证失败。我的嵌入式设备有自己的 wifi(没有互联网),但在我的网络(有互联网)上已连接并可发现。我还在自托管的 Linux docker 运行器上运行我的管道,在该 Linux 机器上我可以通过 ssh 连接到设备。我不确定 bitbucket 在哪里执行此获取指纹过程(我的运行器服务器/他们自己的 bitbucket 服务器/我的笔记本电脑),并且想知道设备 IP 是否在那里不可发现。

我对管道和 ssh 比较陌生,所以我对出了什么问题感到非常困惑。

The fetch fingerprint buffers Doesn't show any error or fingerprints after buffer

我尝试按照文档的说明手动创建 ssh 密钥对,但仍然无法从管道连接 ssh/scp。我确保.ssh和authorized_keys文件的权限分别为700和600。同样,我无法获取已知的主机指纹。

continuous-integration ssh-keys bitbucket-pipelines
1个回答
0
投票

我一直猜测 SSH 指纹是从服务器获取的,无论是您的本地硬件还是 Atlassian 的 Bitbucket Cloud ® 基础设施。不是来自您的自托管管道运行程序(您会如何选择它?),也绝对不是来自您的笔记本电脑。

所以,对于如何获取内网主机的 ssh 指纹的问题,我想象了三种解决方案。

  1. 如果您使用的是本地 Bitbucket 服务器,则您放置在同一网络中的主机应该是可发现的。这是一个非常定制的设置解决方案,我建议不要这样做。但如果这恰好是您当前的设置......我认为从 Web UI 获取应该可以。

  2. 将某些端口转发到防火墙中的内网 ssh 主机。只需获取您的内网面向公众的 IP 地址 + 每个转发端口。恕我直言,这是一个次优的方法,因为即使您将 Atlassian 的公共 IP 范围列入白名单,这也可能违反许多明智的安全策略。

  3. 我的选择:从您的计算机获取 ssh 并将结果保存在 git 存储库的文件中!

    ssh-keyscan address >> ./known_hosts
    。然后,在管道脚本中将该文件附加到可能包含可从 Web UI 发现的指纹的文件中:

pipelines:
  default:
    - step:
        name: Hi intranet
        runs-on:
          - self.hosted
        script:
          - cat ./known_hosts >> ~/.ssh/known_hosts
          - pipe: atlassian/ssh-run:0.8.0
            variables:
              SSH_USER: daniel
              SERVER: intranet-address
              COMMAND: echo hello

如果您已将其放入正确的

~/.ssh/authorized_keys
文件中,从 Web UI 生成的密钥对应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.