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导致构建凉凉排查修正