如何从 spring 引导应用程序隧道 pcf 服务
How to tunnel pcf service from spring boot application
我在 pivotal cloud foundry 上部署了一个 spring 启动应用程序。
我正在尝试从我的 spring 引导应用程序将 (cf ssh) 隧道连接到 pcf 中的该应用程序,但无法找到任何 api 或客户端库实现这一目标。
隧道 pcf 的实际 cli 命令:
cf ssh -N -T -L 10001:localhost:10001 ms 名称
欢迎提出任何建议。
如果您正在尝试编写 Java 代码来执行与 cf ssh
命令相同的操作,那应该是可行的。它是标准 SSH,但具有短期凭据,因此诀窍是生成可从您的应用程序使用的凭据。
这是一个使用标准 SSH/SCP/SFTP 客户端的示例,请注意 ssh.bosh-lite.com
将是您的 SSH 域,您可以从 cf curl /v2/info
:
中看到
$ ssh -p 2222 cf:$(cf app app-name --guid)/0@ssh.bosh-lite.com
$ scp -P 2222 -oUser=cf:$(cf app app-name --guid)/0 my-local-file.json ssh.bosh-lite.com:my-remote-file.json
$ sftp -P 2222 cf:$(cf app app-name --guid)/0@ssh.bosh-lite.com
https://github.com/cloudfoundry/diego-ssh#cloud-foundry-via-cloud-controller-and-uaa
也就是说,您应该能够使用任何标准 SSH Java 库执行类似的操作。
如上所述,诀窍在于获取凭据。用户名将采用 cf:application-guid/app-instance-number
格式,这很简单,但需要使用 cf ssh-code
生成密码,或者类似调用 UAA API.
例如:curl -vv -H 'Accept: application/json' -H "Authorization: $(cf oauth-token)" "https://uaa.run.pivotal.io/oauth/authorize?client_id=ssh-proxy&response_type=code"
此示例使用 curl
发送请求,并使用 cf oauth-token
为登录用户获取有效的 Oauth2 不记名令牌。您可以通过多种方式获得有效的不记名令牌,包括直接调用 API 或使用 cf-java-client。它只需要是应该执行 SSH 操作的用户的有效令牌(即 运行 cf ssh
的用户)。
希望对您有所帮助!
我在 pivotal cloud foundry 上部署了一个 spring 启动应用程序。 我正在尝试从我的 spring 引导应用程序将 (cf ssh) 隧道连接到 pcf 中的该应用程序,但无法找到任何 api 或客户端库实现这一目标。
隧道 pcf 的实际 cli 命令: cf ssh -N -T -L 10001:localhost:10001 ms 名称
欢迎提出任何建议。
如果您正在尝试编写 Java 代码来执行与 cf ssh
命令相同的操作,那应该是可行的。它是标准 SSH,但具有短期凭据,因此诀窍是生成可从您的应用程序使用的凭据。
这是一个使用标准 SSH/SCP/SFTP 客户端的示例,请注意 ssh.bosh-lite.com
将是您的 SSH 域,您可以从 cf curl /v2/info
:
$ ssh -p 2222 cf:$(cf app app-name --guid)/0@ssh.bosh-lite.com
$ scp -P 2222 -oUser=cf:$(cf app app-name --guid)/0 my-local-file.json ssh.bosh-lite.com:my-remote-file.json
$ sftp -P 2222 cf:$(cf app app-name --guid)/0@ssh.bosh-lite.com
https://github.com/cloudfoundry/diego-ssh#cloud-foundry-via-cloud-controller-and-uaa
也就是说,您应该能够使用任何标准 SSH Java 库执行类似的操作。
如上所述,诀窍在于获取凭据。用户名将采用 cf:application-guid/app-instance-number
格式,这很简单,但需要使用 cf ssh-code
生成密码,或者类似调用 UAA API.
例如:curl -vv -H 'Accept: application/json' -H "Authorization: $(cf oauth-token)" "https://uaa.run.pivotal.io/oauth/authorize?client_id=ssh-proxy&response_type=code"
此示例使用 curl
发送请求,并使用 cf oauth-token
为登录用户获取有效的 Oauth2 不记名令牌。您可以通过多种方式获得有效的不记名令牌,包括直接调用 API 或使用 cf-java-client。它只需要是应该执行 SSH 操作的用户的有效令牌(即 运行 cf ssh
的用户)。
希望对您有所帮助!