【问题标题】:Opening a Azure Bastion tunnel in a DevOps Pipeline在 DevOps 管道中打开 Azure Bastion 隧道
【发布时间】:2022-12-11 13:37:51
【问题描述】:

是否可以在 DevOps 管道中打开 Azure Bastion 隧道? 我已经使用本机客户端在本地成功完成了此操作,但隧道命令 az network bastion tunnel 但这会导致窗口锁定,直到发送 Ctrl-C。

是否有可能以某种方式将其集成到 DevOps 管道中,以便在专用网络上通过 ssh / scp 连接到 VM?

谢谢。

【问题讨论】:

    标签: azure azure-pipelines azure-bastion


    【解决方案1】:

    az network bastion rdpaz network bastion rdp 命令(2) 打开隧道,连接本机SSH 或RDP 客户端,最后当客户端断开连接时,隧道被拆除,az 进程退出。对于 SCP,您可能需要咨询https://serverfault.com/questions/522258/file-copying-over-an-already-established-ssh-connection 并检查现有的 SSH 连接是否可以重新用于 SCP。


    替代解决方案:使用后台进程打开隧道。例如。

    nohup az network bastion tunnel > /dev/null 2>&1 & echo $! > run.pid
    scp something
    scp something
    scp something else
    kill -p $(cat run.pid)
    

    免责声明:没有测试,但这种流程管理应该有效。如果隧道命令需要 pty 那么它会更复杂并且需要运行 tmux 或其他终端多路复用器。


    如果您只需要在 VM az vm run-command(1) 上运行命令也可能是一个不错的选择。


    (1) https://learn.microsoft.com/en-us/cli/azure/vm/run-command?view=azure-cli-latest

    (2) https://learn.microsoft.com/en-us/cli/azure/network/bastion?view=azure-cli-latest#az-network-bastion-ssh

    【讨论】:

    • 谢谢! az vm run-commandaz vm invoke-command 解决方案的一个很好的切入点,它让我可以在 VM 上执行命令。但是,然后我需要一种方法(没有 Bastion)在不需要公共 IP 的情况下在那里 scp 文件。有什么好主意吗?
    • 更正:应该是az vm run-command invoke 而不是 invoke-command。
    • 真的。不记得调用是否异步:命令组比命令本身更有意义。据我所知,没有用于文件移动的管理 API。例如。 Azure Devops 复制文件任务在与 VM 交互时使用 WinRM 协议
    【解决方案2】:

    在我的用例中,我们只是将 & 附加到命令的末尾,以使其在后台运行。

    az network bastion tunnel &
    

    https://www.maketecheasier.com/run-bash-commands-background-linux/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-09
      • 2019-11-23
      • 2019-08-04
      • 2021-01-21
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多