Java 使用docker设置带有公钥/私钥信息的ftp.ssh目录
我有一个参考sftp键字符串的舵图:Java 使用docker设置带有公钥/私钥信息的ftp.ssh目录,java,spring,docker,kubernetes,kubernetes-helm,Java,Spring,Docker,Kubernetes,Kubernetes Helm,我有一个参考sftp键字符串的舵图: apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: PUBLIC_KEY
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: PUBLIC_KEY
value: secretFromVault
- name: PRIVATE_KEY
value: secretFromVault
我有一个DockerFile
,它设置我的用户并创建一个.ssh
目录
RUN adduser -D -s /bin/bash -h /test_user test_user &&\
mkdir /test_user/.ssh/ &&\
chmod 700 /test_usr/.ssh/ &&
在这个目录中,我想创建id\u rsa
文件并输入私钥字符串,创建knownhost
文件并输入公钥的引用,以便建立远程连接目标服务器
如何使用dockerfile完成此操作?还是有更好的方法?我的sftp客户端代码引用了这两个文件。您可以将
卷/test\u usr/.ssh
添加到Dockerfile,然后将本地目录装载到该卷。在本地目录中,您可以使用ssh keygen
和knownhosts
生成密钥(如果需要)。您可以将VOLUME/test\u usr/.ssh
添加到Dockerfile中,然后将本地目录装载到该卷。在本地目录中,您可以使用ssh-keygen
和knownhosts
生成密钥(如果需要)。您不需要将机密作为环境变量,而需要将它们作为文件装载
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
volumeMounts:
- name: keys
mountPath: /home/test_user/.ssh
subPath: id_rsa.pub
- name: keys
mountPath: /home/test_user/.ssh
subPath: id_rsa
volumes:
- name: keys
secret:
secretName: secretFromVault
defaultMode: 384
在这种情况下,您需要将机密名称从
PUBLIC\u KEY
和PRIVATE\u KEY
更新为id\u rsa.pub
和id\u rsa
。您需要将机密作为一个文件装载,而不是作为环境变量
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
volumeMounts:
- name: keys
mountPath: /home/test_user/.ssh
subPath: id_rsa.pub
- name: keys
mountPath: /home/test_user/.ssh
subPath: id_rsa
volumes:
- name: keys
secret:
secretName: secretFromVault
defaultMode: 384
在这种情况下,您需要将机密名称从
PUBLIC\u-KEY
和PRIVATE\u-KEY
更新为id\u rsa.pub
和id\u rsa
。您是否介意澄清问题中的关系?您是否正在使用您的Dockerfile
创建的映像来启动sftp服务器?否,我有一个使用jsch库连接到远程服务器的服务,我想在容器中设置身份验证文件,以供应用程序引用。因此,您的容器将使用这些密钥运行Kubernetes吊舱,对吗?是的。没错,你能澄清一下你问题中的关系吗?您是否正在使用您的Dockerfile
创建的映像来启动sftp服务器?否,我有一个使用jsch库连接到远程服务器的服务,我想在容器中设置身份验证文件,以供应用程序引用。因此,您的容器将使用这些密钥运行Kubernetes吊舱,对吗?是的。这是正确的,Dockerfile中的VOLUME
大多只具有令人困惑的副作用;将文件装载到容器中不需要它(例如,@RyanSiu的答案可以在未修改的图像上使用)。VOLUME
在Dockerfile中通常只会产生令人困惑的副作用;将文件装载到容器中不需要它(例如,@RyanSiu的答案可以用于未修改的图像)。