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 图形化界面工具来浏览)
cf enable-ssh yourApp
来打开应用程序(App)的 SSH 功能;cf restart yourApp
重启应用程序;cf ssh yourApp
连接应用程序。参考官网对 SSH 配置的介绍,里面也包含了端口转发等其它内容:https://docs.cloudfoundry.org/devguide/ssh-index.html。
我们可以通过打开 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
执行:cf app APP-NAME --guid
获取 App 的 GUID。命令如下:
$ cf app my-app --guid
abcdefab-1234-5678-abcd-1234abcd1234
调用 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",
...
}
根据上述输出结果:
获取 SSH 所需要的一次性登录密码,后续输入密码时需要用到这个。命令如下:
$ cf ssh-code
E1x89n
打开 SSH,连接容器。这里可以使用 ssh 协议,或者 scp 协议都可以。
ssh -p 2222 cf:abcdefab-1234-5678-abcd-1234abcd1234/0@ssh.MY-DOMAIN.com