Skip to content

Cloud Foundry SSH

SSH 概述

简介

Secure Shell (SSH) 是一种用于在非安全网络上运行服务的网络协议。Cloud Foundry 能够连接 Cloud Foundry 上运行的应用并管理绑定的后端服务实例。有关底层实现的更多信息,请参见 CF SSH 组件和进程官方文档。

例如,如果您需要对某个应用的实例进行故障排除,可以通过 SSH 直接连接到运行应用的容器。这样,您就可以通过查看其它日志文件或使用标准系统工具监控各个进程的负载来排除故障。

除了对应用进行故障排除之外,您还可以使用 SSH 连接到后端服务实例并执行原始 SQL 命令、导入和导出数据,或者调试应用数据问题(详情请参见使用 SSH 访问服务和后端服务文档)。

SSH 访问

我们建议仅在需要时启用 SSH 访问,然后再将其停用。此外,您还需要选择启用和禁用 SSH 访问权限的人员,并仅限制拥有该权限的人员使用。

控制层级

默认设置

  • 默认启用空间 SSH。
  • 默认禁用应用 SSH,仅具有 空间开发者 角色的用户可针对特定应用启用应用 SSH。

下表显示了 CF 用户角色及其启用和禁用 SSH 的权限范围。

CF 用户角色 SSH 权限范围 可用命令
SpaceManager 空间 cf CLIallow-space-sshdisallow-space-ssh 命令
SpaceDeveloper 应用 cf CLI enable-sshdisable-ssh 命令

仅当空间管理员和空间开发者在各自级别授予 SSH 访问权限时,才能通过 SSH 访问应用。以下图中的 Cloud Foundry Org 为例,其中:

  • 空间管理员为在空间 "A""B" 但未在 "C" 中运行的所有应用启用 SSH 访问。
  • 空间开发者允许将 SSH 用于空间 "A" 中的 "App 1""App 2",但不允许用于 "App 3"
  • 空间开发者允许将 SSH 用于空间 "B" 中的 "App 1",但不允许用于 "App 2""App 3"

Cloud Foundry SSH Access Hierarchy

通过 SSH 连接应用

接下来,我们将逐步指导您使用 CF CLI 通过 SSH 连接您的应用。

先决条件

您需要具有

  • 拥有 CF 角色 SpaceManagerSpaceDeveloper 的用户,
  • 或已启用 SSH 访问和角色 SpaceDeveloper 的空间的访问权限,以及
  • 在此空间运行的应用。

步骤

按照步骤连接应用容器:

  1. 使用 CLI 登录 Cloud Foundry(例如 cf login -a https://api.cf.eu1.mindsphere.io --sso)。
  2. 选择启用 SSH 的空间或使用 cf allow-space-ssh {spaceName} 启用空间。
  3. 使用 cf space-ssh-allowed {spaceName} 检查 SSH 是否启用。
  4. 运行 cf enable-ssh {appName} 为您的应用启用 SSH。
  5. 重新启动应用。
  6. 使用 cf ssh {appName} 连接您的应用。

现在,您已经连接到应用容器。在容器内运行 lstop 等命令来测试连接情况。

之后退出并禁用访问:

  1. 运行 exit 命令关闭连接。
  2. 使用 cf disable-ssh {appName} 禁用 SSH 应用访问。
  3. 重新启动应用。
  4. 您可以运行 cf disallow-space-ssh {spaceName} 停用该空间的 SSH 访问。

信息

启用 S​​SH 访问后,必须重新启动应用。

使用代理服务器配置进行连接

如果使用公司代理服务器,或者如需使用类似 scp 的特殊 SSH 工具,您需要使用其它方式进行连接。本分步指南将介绍如何使用 Putty 连接应用。

先决条件

您需要具有

  • 拥有 CF 角色 SpaceManagerSpaceDeveloper 的用户,
  • 或已启用 SSH 访问和角色 SpaceDeveloper 的空间的访问权限,
  • 在此空间运行的应用,以及
  • 安装在您的系统或其它 SSH 工具上的 Putty。

步骤

按照以下步骤,通过以特殊格式的用户名进行登录后,可安全连接应用实例,该用户名将信息传递给在容器的主机虚拟机上运行的 SSH 代理服务器:

  1. 使用 CLI 登录 Cloud Foundry(例如 cf login -a https://api.cf.eu1.mindsphere.io --sso)。
  2. 选择启用 SSH 的空间或使用 cf allow-space-ssh {spaceName} 启用空间。
  3. 使用 cf space-ssh-allowed {spaceName} 检查 SSH 是否启用。
  4. 运行 cf enable-ssh {appName} 为您的应用启用 SSH。
  5. 使用 cf app {appName} --guid 获取应用标识符。
  6. 使用 cf curl / v2 / info 检索 SSH 端点(例如 "app_ssh_endpoint": "ssh.cf.eu1.mindsphere.io:8443"),因为端点和端口可能会改变。
  7. 运行 cf ssh-code 获取一次性密码。
  8. 使用上述所有信息通过 cf:APP-GUID/APP-INSTANCE-INDEX@SSH-ENDPOINT 架构(例如 cf:2762072f-1e4e-4b73-8c9c-89c8e14382e5/0@ssh.cf.eu1.mindsphere.io)构建 SSH 连接 URL。
  9. 启动 Putty。
  10. Host Name (or IP address)Port 字段中输入之前创建的 SSH 连接 URL 和端口。
  11. (可选)在 Connection / Proxy 选项中配置代理服务器。
  12. 单击 Open
  13. 在系统提示后输入一次性密码。

现在,您已经连接到您的应用容器。使用 lstop 等命令行工具测试连接情况。

之后退出并禁用访问:

  1. 关闭窗口以关闭连接。
  2. 使用 cf disable-ssh {appName} 禁用 SSH 应用访问。
  3. 您可以运行 cf disallow-space-ssh {spaceName} 停用该空间的 SSH 访问。

结果

Remote console on connected container

访问后端服务实例

要访问后端服务实例,请参见使用 SSH 访问服务官方文档。 您还可以在后端服务文档中查看连接实例的教程(使用左侧导航)。例如,查看如何使 PostgreSQL 服务实例在本地可用。

相关链接

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: April 28, 2019