You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Kubernetes Pod中的Apache服务SSH至外部独立Linux服务器

在Kubernetes Pod中配置Apache通过SSH连接外部Linux服务器

要在Kubernetes的Apache Pod里实现SSH连接外部服务器,核心思路和物理机上一致——用SSH密钥对认证,但需要把私钥安全地注入Pod中,而非打包到镜像里。具体步骤如下:

1. 生成无密码SSH密钥对

先在本地生成一对SSH密钥,注意不要设置密码(否则Pod无法自动完成认证):

ssh-keygen -t rsa -b 4096 -f apache-ssh-key

执行后会得到两个文件:apache-ssh-key(私钥)和apache-ssh-key.pub(公钥)。

2. 将公钥部署到目标Linux服务器

这一步和你在物理机上的操作完全相同:把apache-ssh-key.pub的内容追加到目标服务器的~/.ssh/authorized_keys文件中。你可以用ssh-copy-id快速完成:

ssh-copy-id -i apache-ssh-key.pub 目标服务器用户名@目标服务器IP

或者手动编辑目标服务器的authorized_keys文件,把公钥内容粘贴进去。

3. 在Kubernetes中创建Secret存储私钥

Kubernetes的Secret是存储敏感信息的最佳方式,用它来保存SSH私钥:

kubectl create secret generic apache-ssh-key --from-file=id_rsa=./apache-ssh-key

这条命令会创建一个名为apache-ssh-key的Secret,其中包含私钥数据,键名是id_rsa。

4. 修改Apache Pod的部署配置,挂载Secret

需要在Pod的Deployment YAML中添加卷挂载,把Secret里的私钥挂载到容器内Apache用户的.ssh目录下。示例配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apache-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apache
  template:
    metadata:
      labels:
        app: apache
    spec:
      volumes:
        - name: ssh-key-volume
          secret:
            secretName: apache-ssh-key
            defaultMode: 0600  # 直接设置Secret文件权限为600,符合SSH要求
      containers:
        - name: apache
          image: your-apache-image:tag
          volumeMounts:
            - name: ssh-key-volume
              mountPath: /var/www/.ssh/id_rsa  # 挂载到Apache用户的.ssh目录下,路径根据容器内用户调整
              subPath: id_rsa  # 指定只挂载Secret中的id_rsa文件
          securityContext:
            runAsUser: 33  # www-data用户的UID,不同镜像可能有差异,按需调整
            runAsGroup: 33

注意:如果你的Apache容器使用的不是www-data用户,要对应调整mountPath的路径(比如用户主目录下的.ssh),以及runAsUser/runAsGroup的数值。

5. 验证连接

部署更新后,进入Pod测试SSH连接:

# 进入Pod
kubectl exec -it <apache-pod-name> -- /bin/bash
# 切换到Apache运行用户
su www-data
# 测试连接目标服务器
ssh 目标服务器用户名@目标服务器IP

如果能无密码登录,说明配置成功。

额外注意事项

  • 不要把SSH私钥打包到Docker镜像中,避免敏感信息泄露。
  • 确保Kubernetes集群网络能访问到目标服务器的22端口(或自定义SSH端口),必要时调整集群防火墙或网络策略。
  • 如果目标服务器使用非默认SSH端口,连接时需要指定端口:ssh -p 自定义端口 目标服务器用户名@目标服务器IP

内容的提问来源于stack exchange,提问作者Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:20:20