前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker: Alpine Linux升级且安装openssh导致构建凉凉排查修正

Docker: Alpine Linux升级且安装openssh导致构建凉凉排查修正

作者头像
CRPER
发布2022-09-01 09:57:55
1.1K0
发布2022-09-01 09:57:55
举报
文章被收录于专栏:CRPER折腾记CRPER折腾记
Docker: Alpine Linux升级且安装openssh导致构建凉凉排查修正
Docker: Alpine Linux升级且安装openssh导致构建凉凉排查修正

前言

最近在搞一个迭代,发现开发环境的持续集成有些地方可以优化,但需要动到前端基础镜像; 而搞完基础镜像准备用起来的时候,问题就冒出来了。本着不能半途而废的态度,搞起~~

问题

这边是用Jenkins做持续集成的,用了pipeline语法,所以一般出错都能比较快速感知到某个阶段凉了~

在这里插入图片描述
在这里插入图片描述

排查

报错信息就那么点,那就逐句分析~~

1. deploy_devopment.sh

这是在devops上某个阶段会调用这个脚本去做一些事情,源码大体如下

在这里插入图片描述
在这里插入图片描述

脚本做了这么一些事情,就是用私钥去链接远端服务器。成功后然后判定是否安装了一些工具集,再推过去,失败就直接退出

2. Pseudo-terminal will not be allocated because stdin is not a terminal.

其次映入眼帘的这句话,就是 唯一能快速感知的信息了。。搜索引擎翻了一遍,基本都是说什么不是一个标准终端运行 加-tt来模拟终端。。具体就是这样

代码语言:javascript
复制
# 增加-t -t参数来强制伪终端分配,即使标准输入不是终端。
ssh -tt user1@host1 -p 9527

复制代码

但是,毫无意义。。。只能继续排查

3. Host key verification failed.

意思很直白,链接域的密钥校验不通过。不科学啊。。逆向推测一下。。

情况1: 不升级镜像底层(alpine版本)正常运行(镜像也安装了openssh),构建也如期进行。 情况2: 升级镜像底层(安装openssh),构建密钥就过不去了。。。

结合密钥过不去,那问题很大概率应该就是出现在openssh的版本了。。 Alpine Linux Apk查询: pkgs.alpinelinux.org/packages

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版本跨了一个大版本,那妥妥的是破坏性更新导致的啊!!! 问了下我们的运维小伙伴,我们开发环境目前用的是那种算法加密的!(收到的答复就是:rsa);

为了二次确认,用ssh -v和现有的密钥去尝试链接远端服务器,输出的日志里面就很清晰的说明了

代码语言:javascript
复制
 # ssh -v -p port user@host
OpenSSH_8.8p1, OpenSSL 1.1.1o  3 May 2022
debug1: Reading configuration data /etc/ssh/ssh_config
-------跳过------
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: identity file /root/.ssh/id_ecdsa_sk type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
-------重点来了------
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Offering public key: /root/.ssh/id_rsa RSA SHA256:In8kvJ1yVExAGJCUrEaJlLme0w2Kbnkjh90GvB3XkvE
debug1: send_pubkey_test: no mutual signature algorithm
复制代码

看上面的log说是没有匹配的签名算法,接下来就是翻changelog了。。 www.openssh.com/txt/release…

在这里插入图片描述
在这里插入图片描述

解决姿势

配置文件增加域启动配置

我这边直接打到docker内,省去所有from该基础镜像的都需要手动配置一遍;

代码语言:javascript
复制
RUN  mkdir ~/.ssh && echo $'Host *\n\
  StrictHostKeyChecking no\n\
  PubkeyAcceptedKeyTypes +ssh-rsa\n\
  HostKeyAlgorithms=+ssh-rsa\n\
  UserKnownHostsFile=/dev/null\n'\
  > ~/.ssh/config
复制代码

会话添加参数

代码语言:javascript
复制
# openssh版本不是太高的,可以直接用参数指定会话算法
 ssh -oHostKeyAlgorithms=-ssh-rsa user@host
 
 # 比较新的openssh需要启动该算法,默认是不启用的,
 #  PubkeyAcceptedKeyTypes=+ssh-rsa
复制代码

总结

有不对之处请指出,会及时修正,谢谢阅读

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题
  • 排查
    • 1. deploy_devopment.sh
      • 2. Pseudo-terminal will not be allocated because stdin is not a terminal.
        • 3. Host key verification failed.
        • 解决姿势
          • 配置文件增加域启动配置
            • 会话添加参数
            • 总结
            相关产品与服务
            持续集成
            CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档