Insights Hub Cloud Foundry (CF) – 使用 SSH 连接 CF 中运行的应用程序(容器)

2024-03-26T02:34:19.000-0400
Developer Tools Applications

摘要

1. 当需要连接到 CF 中的应用程序(App)以便做一些操作。例如:远程调试、查看 CF 中运行的 App 的文件结构、通过 App 的 SSH 做本地端口映射,以便本地数据库工具连接 CF 中的数据库…… 2. 或者有时需要排查问题。例如:检查 CF 中的 App 里的对应文件是否存在?推送到 CF 中的整个应用是否和本地的一致?或者需要备份整个 App。(这里可参考之前的一篇文章:https://support.sw.siemens.com/zh-CN/product/268530510/knowledge-base/KB000130806_ZH_CN,里面是使用的命令行的方式直接下载 App。本文将会介绍另外一个方式,更直观地使用 GUI 图形化界面工具来浏览)


详细信息

一、SSH 开启步骤与使用命令行工具连接 App

  1. 使用 cf enable-ssh yourApp 来打开应用程序(App)的 SSH 功能;
  2. 执行 cf restart yourApp 重启应用程序;
  3. 执行 cf ssh yourApp 连接应用程序。

参考官网对 SSH 配置的介绍,里面也包含了端口转发等其它内容:https://docs.cloudfoundry.org/devguide/ssh-index.html

二、通过图形化工具连接到 App 所在容器

我们可以通过打开 App 所在容器的 SSH,然后通过命令行或者 GUI 界面工具来连接到容器。对应的操作可参考 Cloud Foundry 官网:https://docs.cloudfoundry.org/devguide/deploy-apps/ssh-apps.html#ssh-command

这里介绍 CF 官网中的一种方法 —— 通过 SSH,使用 App GUID 来连接其所在的容器。文档链接:https://docs.cloudfoundry.org/devguide/deploy-apps/ssh-apps.html#app-guid

2.1 获取 App 的 GUID

执行:cf app APP-NAME --guid 获取 App 的 GUID。命令如下:

$ cf app my-app --guid
abcdefab-1234-5678-abcd-1234abcd1234

2.2 获取 SSH endpoint 的信息

调用 CF 提供的 API - /v2/info 来获取 App SSH 的 Endpoint。命令如如下:

$ cf curl /v2/info
{
    ...
    "app_ssh_endpoint": "ssh.example.com:2222",
    "app_ssh_host_key_fingerprint": "a6:14:c0:ea:42:07:b2:f7:53:2c:0b:60:e0:00:21:6c",
    ...
}

根据上述输出结果:

  • Domain 地址为:ssh.example.com
  • 端口:2222

2.3 获取 SSH 登录密码

获取 SSH 所需要的一次性登录密码,后续输入密码时需要用到这个。命令如下:

$ cf ssh-code
E1x89n

2.4 连接 App 所在容器

打开 SSH,连接容器。这里可以使用 ssh 协议,或者 scp 协议都可以。

  1. 针对 SSH 协议
    参考官网给出的示例,使用命令:ssh -p 2222 cf:abcdefab-1234-5678-abcd-1234abcd1234/0@ssh.MY-DOMAIN.com
    在上述命令中,abcdefab-1234-5678-abcd-1234abcd1234 即为之前获取到的 app 的 guid。 
  2. 针对 SCP 协议
    这里可以使用 WinSCP Windows 的图形化界面来连接容器:
     
    下图为成功连接到 App 容器
     

知识库文章 ID# KB000130805_ZH_CN

内容

摘要详细信息

关联组件

Cloud Foundry