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

Posted crper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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来模拟终端。。具体就是这样

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

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

3. Host key verification failed.


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

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

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




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

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

 # 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了。。
https://www.openssh.com/txt/release-8.3

解决姿势

配置文件增加域启动配置

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

RUN  mkdir ~/.ssh && echo $'Host *\\n\\
  StrictHostKeyChecking no\\n\\
  PubkeyAcceptedKeyTypes +ssh-rsa\\n\\
  HostKeyAlgorithms=+ssh-rsa\\n\\
  UserKnownHostsFile=/dev/null\\n'\\
  > ~/.ssh/config

会话添加参数

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

总结

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

以上是关于Docker: Alpine Linux升级且安装openssh导致构建凉凉排查修正的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Docker之Alpine制作镜像且上传至阿里云

Alpine linux安装docker

VirtualBox中Alpine Linux + Docker安装记录