我有一个部署在关键的Cloud Foundry上的spring boot应用程序。我正在尝试从我的Spring Boot应用程序隧道(cf ssh)到pcf中的该应用程序,但是无法找到任何api或客户端库来实现它。
隧道PCF的实际cli命令: cf ssh -N -T -L 10001:localhost:10001 ms名称
欢迎任何建议。
如果您试图编写与cf ssh
命令具有相同功能的Java代码,那应该是可能的。它是标准的SSH,但是具有短暂的凭据,因此,该技巧将生成可从您的应用程序使用的凭据。
这是使用标准SSH / SCP / SFTP客户端的示例,请注意,这ssh.bosh-lite.com
将是您的SSH域,您可以从cf curl /v2/info
以下位置看到:
$ ssh -p 2222 cf:$(cf app app-name --guid)/[email protected]
$ 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)/[email protected]
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
)。
希望有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句