在k8s的pod中,调用ssh内网穿透

首先 生成一份 ~.ssh/id_rsa与~/.ssh/id_rsa.pub文件

将两份文件的内容,使用base64编码,生成两个secret的配置

如 ssh_secrect.yaml:

 更新或新增刚刚创建的secret

kubectl create -f ssh_secrect.yaml

查看你的secret目录挂载的位置,以我的为例,我挂载在 /config 目录下

 编写shell脚本

建议把shell文件写在项目中,不要打包进docker镜像内,不安全

我的shell文件是写在项目内的,在根目录的 /shell/ssh-mysql.sh 文件内容如下

要注意你要映射的本地端口后,代码中不要写错了,否则会连接失败

#!/bin/bash
str=$"\n"
# 注意 13306是你本机要连接的地址
nohup /usr/bin/ssh -N -p 22 ops@11.22.33.44 -L 127.0.0.1:13306:55.66.77.88:3306 &
# 8.210.79.54 内网穿透地址  127.0.0.1:13306 本机地址与连接的端口号 10.128.3.177:3306 数据库id与地址
sstr=$(echo -e $str)
echo $sstr
tail -20 /var/log/messages
# 要确定/var/log/messages日志是否存在,如果不存在,可以修改为其他必有的文件

接下来,修改你的docker镜像

找到你的docker中的可执行文件,新增如下内容

idRsaSecretFile="/config/id_rsa"  # 注意,这个是我的挂载的目录,你要确定是否与你的目录一致,不一致的话需要修改为你自己的地址
idRsaProfFile="/root/.ssh/id_rsa"  # id_rsa要存放的目录,这个是通用的
if [ -f "$idRsaSecretFile" ];then
  if [ ! -f "$idRsaProfFile" ];then
    cat $idRsaSecretFile > $idRsaProfFile
    chmod 0600 $idRsaProfFile  # 修改文件权限,如果不修改,无法执行ssh命令
  fi
fi

idRsaPubSecretFile="/config/id_rsa.pub"  # 注意,这个是我的挂载的目录,你要确定是否与你的目录一致,不一致的话需要修改为你自己的地址
idRsaPubProfFile="/root/.ssh/id_rsa.pub"  # id_rsa.pub要存放的目录,这个是通用的
if [ -f "$idRsaPubSecretFile" ];then
  if [ ! -f "$idRsaPubProfFile" ];then
    cat $idRsaPubSecretFile > $idRsaPubProfFile
    chmod 0600 $idRsaPubProfFile
    echo "StrictHostKeyChecking no" >~/.ssh/config  # 不检查ssh的用户设置,否则需要手动输入yes才能跳过,必须配置
  fi
fi


# ssh脚本的位置
sshRunFile="/work/site/shell/env_test_asset_ssh.sh"
# 根据当前环境变量,判断是否允许执行ssh脚本,我配置的是dev环境才执行
if [[ "$ENV" == "dev" ]]; then
  # 判断ssh文件是否存在,如果存在,才允许执行
  if [ -f "$sshRunFile" ];then
    chmod a+x $sshRunFile  # 给ssh脚本增加可执行权限
    /bin/bash $sshRunFile  # 执行ssh脚本
  fi
fi

打包镜像,发布,更新你的pod,进入pod查询是否执行成功

ps aux|grep 'ssh'

 

打工搞成 

如若不成功,可以加我微信,coderyu,友情在线帮助~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值