专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一次诡异的Ansible密码问题排查,最后真相?

  背景
  在做大批量运维的时候,DBA需要掌握和使用ansible。今天有同事使用ansible遇到了一个奇怪现象,和我交流了一下,我发现这个现象很奇怪,也很有趣,我认为是个BUG,于是排查,之后有了这篇文章。现象
  同时使用的是ansible2。7。8,我使用的是最新版python3。11ansible2。14,我们都复现了这个现象。这个问题简而言之是,使用比较特殊的密码组合作为主机密码,ansible在使用上会遇到问题,导致正确的密码而无法连接。
  以下是我的环境:
  角色
  hostname
  IP
  使用的密码
  ansibleserver
  192168199121
  192。168。199。121
  不涉及
  有问题的受控机
  19216819999
  192。168。199。99
  1fander
  没问题的受控机
  192168199131
  192。168。199。131
  Root123〔root192168199121〕catetcansiblehosts〔fandervm〕192。168。199。99ansibleuserrootansiblesshpass1fander〔root192168199121〕ansible192。168。199。99mping192。168。199。99UNREACHABLE!{changed:false,msg:Invalidincorrectpassword:Permissiondenied,pleasetryagain。,unreachable:true}同事疑问1特殊密码,ansible无法连接会报错
  同时设置了一个形如1xxxxxx的密码,使用sshroot192。168。199。99连接是完全没有问题的,但使用ansible连接则会报错,Invalidincorrectpassword:Permissiondenied,pleasetryagain。无法连接。这个密码经过我的研究,是有规律,1位到任意长度的数字‘’任意长度字符,ansible会报错。
  也就是,以下密码会报错1fander12fander
  以下密码不会报错1afander1fander同事疑问2此特殊密码,ansible无法连接会报错,但有时却能连接不报错排查过程1。ansiblevvvvv排查
  v参数可以让ansible输出debug日志,v越多越详细。当然了,可能并不需要五个v,我不知道要打多少个v时,我就把v打满。(mysqlbinlog我打3个v)
  如图红圈和横线,这两处很关键。
  红圈告诉我,我在执行ansible时,其实底层调用的是sshpass和ssh。
  横线这一处,报有个文件不存在,我对比了执行正常连接的机器(192。168。199。131),是不会报这个的,所以此处属于异常,需要排查。
  这些日志输出其实一团糟,可以粘贴到notepad,用以下方法美化输出。
  粘贴到notepad只有两行,通过替换r为换行符即可。
  首先,我先把r替换为fanderissb
  然后,再以扩展模式,替换回来
  现在就比较好阅读了,这一处就是不正常的。
  经过研究,这些debug日志其实来源于我前面红圈的命令行sshpassxxx的输出。
  查阅资料和整理,原理大概是这样的:
  正确连接是长这个样子的,命令结果是输出root,前面的0是命令?的返回码,0代表执行正常。
  而我们密码有问题的服务器返回码是5,输出是空
  sshpassd10sshvvvCoControlMasterautooControlPersist60soStrictHostKeyCheckingnooUserrootoConnectTimeout10oControlPathroot。ansiblecpe2f9f7759b192。168。199。99binshcechorootsleep0
  在这句命令中,ControlPersist60s是ssh的参数,代表建立一个长链接,保持60秒,这个长链接就是建立在ControlPathroot。ansiblecpe2f9f7759b的路径下。
  实际上,就是这个ControlPersist,可以解答同事疑问2此特殊密码,ansible无法连接会报错,但有时却能连接。
  为了方便解释,我把ansible服务器的这个ControlPersist调大到600秒。〔root192168199121〕catetcansibleansible。cfg〔defaults〕hostkeycheckingFalse〔sshconnection〕sshargsCoControlMasterautooControlPersist600
  首先,我登录远端服务器,先把密码改回常规密码。〔root19216819999〕echoRoot123passwdstdinrootChangingpasswordforuserroot。passwd:allauthenticationtokensupdatedsuccessfully。
  接着,我配置好ansible服务器的hosts文件。〔root192168199121〕catetcansiblehosts〔fandervm〕192。168。199。99ansibleuserrootansiblesshpassRoot123
  然后,开始测试。完全没有问题,能连通。〔root192168199121〕ansible192。168。199。99mping192。168。199。99SUCCESS{ansiblefacts:{discoveredinterpreterpython:usrbinpython},changed:false,ping:pong}
  执行psef能观察到,我们第一次连接完后,ssh并没有断开,有一个背景执行的长链接,他实际上是一个多路复用的socket连接,后续我们再连远端服务器时就是复用他,不需要重新验证密码。〔root192168199121〕psefgrepsshroot8601017:18?00:00:00usrsbinsshdDroot945860017:18?00:00:04sshd:rootpts0,pts1root92201022:40?00:00:00ssh:root。ansiblecpe2f9f7759b〔mux〕root92671009022:41pts000:00:00grepcolorautossh
  这个时候,我把远端的服务器密码修改为有问题的密码〔root19216819999〕echo1fanderpasswdstdinrootChangingpasswordforuserroot。passwd:allauthenticationtokensupdatedsuccessfully。
  此时,我的ansible服务器的hosts配置里仍然用的旧密码〔root192168199121〕catetcansiblehosts〔fandervm〕192。168。199。99ansibleuserrootansiblesshpassRoot123
  密码是错误的,那么我还能连吗?答案是能。这就是连接复用,不需要重新验证密码,直接复用前面的socket连接。
  所以,这时你通过ansible,密码乱输或者不输密码都能连。〔root192168199121〕catetcansiblehosts〔fandervm〕192。168。199。99ansibleuserroot我这里直接去掉了密码〔root192168199121〕date;ansible192。168。199。99mshellalsSunNov1322:49:15CST2022我复用这个链接的时间192。168。199。99CHANGEDrc0anacondaks。cfg
  那么这个长链接是创建后的600秒自动销毁吗?(提醒,前面我修改的ControlPersist600s)
  答案否。因为我在创建连接后,中途复用过这个连接通道,时间是22:49:15,所以他消失时间不是创建时间22:40:2810分钟,而是22:49:1510分钟,也就是22:59:15。〔root192168199121cp〕pwdroot。ansiblecp〔root192168199121cp〕state2f9f7759b;dateFile:‘e2f9f7759b’Size:0Blocks:0IOBlock:4096socketDevice:fd00h64768dInode:68415916Links:1Access:(0600srw)Uid:(0root)Gid:(0root)Access:2022111322:40:28。6805779860800Modify:2022111322:40:28。6155779880800Change:2022111322:40:28。6155779880800Birth:SunNov1322:59:00CST2022〔root192168199121cp〕state2f9f7759b;datestat:cannotstat‘e2f9f7759b’:NosuchfileordirectorySunNov1322:59:30CST2022超过22:59:15,socket消失了。
  那同事的疑问2,就可以解释了,有问题的密码依然不能通过ansible连接,能连接的假象是因为曾经用正确的密码建立过长链接(这个是ssh的参数功能,不是ansible),后面连接时复用了此连接,没有使用密码认证,所以也就不会报错了。待ControlPersist超时后,socket销毁,有问题的密码连接就开始报错了。
  我们继续排查同事的疑问1。
  根据我前面整理的原理,我标记1、2、3、4数字的这几步,我按这个顺序从下往上开始一一排除。
  其实,本来应该从最顶上的4开始排查的,但4需要阅读源码,所以我从简单的1开始排查。2。排查ssh
  首先,我测试标记为1的步骤,手敲这个密码,ssh是否认正常。结果是连接正常。
  3。排查sshpass
  然后,测试标记为2的步骤,测试sshpass传输密码是否正常的。结果也是连接正常。〔root19216819999〕sshpassp1fandersshCoControlMasterautooControlPersist60soStrictHostKeyCheckingnooUserrootoConnectTimeout10oControlPathroot。ansiblecpe2f9f7759b192。168。199。99binshcechorootsleep0root
  这里,我调整了原命令,因为原命令用的是sshpassd10,这个文件描述符文件我不知道如何制造,所以我改为用sshpassp来测试。我去掉了vvv,因为如果一切正常,我不需要刷屏的debug日志。4。使用paramiko连接方式辅助排查
  标记为3的步骤,我不知道如何测试,但我知道ansible除了ssh连接,还有一种叫paramiko的连接方式,他是旧版ansible的默认连接方式,他比较低效,他不使用ControlPersist,也就不会建立Controlsocket,而之前我们连接报错时,日志的关键信息就是Controlsocketroot。ansiblecpe2f9f7759bdoesnotexist
  当然了,他也不会使用sshpass和不会把密码写入那个数字为10的文件描述符。所以,如果我能在paramiko的连接方式能复现报错,那么就和标记为3的步骤无关。〔root192168199121inventory〕catetcansibleansible。cfg〔defaults〕hostkeycheckingFalsecallbackwhitelisttimertransportparamiko
  结果是,我使用paramiko的连接方式,也能复现连接报错。
  他这个python抛出异常非常好,终于让我知道为什么密码会错误了,原来传进去的密码不是1fander,而是1。也就是问题肯定不在标记为3的步骤,而是标记为4的步骤。
  根据报错,我在authhandler。py文件里打了两个print。
  我们再看看输出。
  那么,标记为1、2、3的步骤我们都排除了,问题出在标记为4的步骤,也就是现在的问题是:
  为什么ansible传入给sshpass和ssh的密码不正确,应该传入1fander,但最终传入1?5。排查ansiblek
  我们再来做个测试,不使用ansiblehosts文件传递密码,使用k参数手敲密码。发现一切正常。6。水落石出,是ansible的hosts设置问题
  那问题完全能定位出来了,这个疑似bug,不是ssh也不是sshpass的问题,而是ansible的问题。并且,我们能确定,这个和ansible读取解析etcansiblehosts文件有关。
  经过我查阅资料,ansible读取解析etcansiblehosts相关的代码在这个路径下,ini。py文件。cdusrlocalpython3libpython3。11sitepackagescdansiblecore2。14。0py3。11。eggansiblepluginsinventorylessini。py
  通过阅读注释,发现这个不是bug,而是官方知道的问题,所以属于一个坑。
  最后
  我经常阅读源码都是通过阅读注释就解决的,这很有趣,适合我这种萌新coder。现在是2022年11月13日的23:56分,由于能力和时间的关系,我就写到这里了。大家应该看懂了解决办法,请大家避免这个坑,这个坑不单止针对密码,在hosts文件的所有变量设置都应该这么做(上图横线)。有兴趣深入研究的同学可以继续看看源代码。

2022江西高考分数线公布一本文史529,理工509江西2022年分数线文史类一本529分二本472分理工类一本509分,二本440分。相比于2021年,2022年的分数线整体略有下降。江西2021年分数线文史类一本559分,二本4江西宁夏云南内蒙古甘肃五省2022年高校高考招生录取线?今日6。23日高考成绩正式公布,江西宁夏云南内蒙古甘肃5个省份2022年全国普通高校各类招生录取最低控制分数线已正式公布。如果想了解这5省的高校高考录取分数线,可看下面的图片,有什解放军敢亮剑,常态战巡,10艘军舰现身大洋,西太不是美国的澡盆美国是在第二次世界大战后,从英国手里接过了世界霸主的地位,如今的美国还是唯一的超级大国,不过就美国现状而言,美国的世界霸主已经名不符实,因为美国要靠举债过日子,根据美国公布的数据,兰溪富豪章小华艰苦创业,打造水泥生产龙头企业,身家100亿推荐语兰溪属于浙江省县级市,历史悠久人杰地灵,是一块历史文化沉淀深厚的土地,也是浙江省非物质文化遗产资源最丰富的市县之一。从在兰溪境内发现多处旧石器时代的遗址和石器来看,表明早在七华为将手机电脑整合为一个产品,实现打开电脑玩手机对于商务笔记本电脑,消费者的需求一直是只增不减,甚至得用求全责备来形容。作为消费者,我们希望办公本能够有比较大的屏幕,却又希望它足够轻薄我们希望它有强大的性能,又希望它低能耗,低发1988年男子借给朋友5万元,31年后,朋友专门从美国飞回来还钱上世纪80年代,我国实行改革开放,沿海地区的经济飞速发展,身在湖北十堰的张道汉从报纸中,看到广州引入许多新型电器,他敏锐的嗅到了商机。张道汉想,他所在的十堰市属于内陆城市,还没有彩美国再也封锁不住,我国5大高科技领域重大突破,全都是世界第一说到我们国家,近些年崛起的速度,想来大家都有所目睹,很多技术都取得了突破,特别是人工智能,以及5G的技术,我们已经远远超过了国外。那今天我们就来盘点一下,近些年来,我国取得突破性进玩砸了!美国一条龙支持乱港夺权,狐狸尾巴露出,豺狼凶相毕现文柳扶风中国外交部日前发表约4万字的文章,题曰美国对华认知中的谬误和事实真相,列出美国的21点谬误,用事实和数据说话回应,揭示美国对华政策的欺骗性虚伪性和危害性。文章回应了香港问题名记活塞将格兰特交易至开拓者得25年雄鹿首轮签等筹码直播吧6月23日讯据名记Woj报道,消息人士透露,活塞将杰拉米格兰特交易至开拓者,得到2025年来自雄鹿的首轮签(前4顺位保护)。此外,Woj还补充道,活塞还把今年的46号签与开拓欧洲足坛转会内马尔被5000万欧推荐给巴萨,利物浦又卖一名前锋欧洲联赛已经进入休赛期,球员们开始进入假期,但是俱乐部和经纪人现在正是忙的时候,他们需要处理很多转会事宜。现在每天都有新的转会消息传来,豪门球队更是希望补强实力,为下赛季夺得好成绩邮报曼联和切尔西都有意邀请前利物浦总监爱德华兹直播吧6月23日讯每日邮报报道,曼联和切尔西都有意邀请前利物浦总监爱德华兹。曼联和切尔西都需要补充各自俱乐部的管理层,曼联目前由足球总监默塔夫主导引援事宜,他们希望彻底扭转原来引援
读湘西故事笔记(十五)湘西名镇茶峒湘西有个很出名的古镇,位于湖南贵州重庆三省(市)交界处,素有一脚踏三省之称,与浦市里耶王村并称湘西四大名镇,它就是花垣县的茶峒。大文豪沈从文写有一篇著名的小说边城的背景便是这里,近在广州邂逅粉色浪漫,紫花风铃木正盛放!文图羊城晚报全媒体记者何奔广州有一种少女粉,回头率高达100!近日,广州天河区临江大道与广州大道交界处,寺右万科中心楼下,16棵紫花风铃木构建春天童话长廊,成为当季网红打卡地。游客手慢无!2023龙庆峡冰灯冰雪嘉年华门票免费领!头条创作挑战赛龙庆峡冰灯冰雪嘉年华门票免费送龙庆五十载冰雪映芳华龙庆峡冰灯冰雪嘉年华以冰雪为媒,用极地海洋等主题元素,呈现20世纪80年代以来国家在南极科考等方面的发展成就,体现海树山猛将迎新之旅获评全国乡村旅游精品线路近日,文化和旅游部公布了乡村四时好风光瑞雪红梅欢喜过年全国乡村旅游精品线路名单,其中,树山乡村微旅行猛将迎新之旅位列其中。树山乡村微旅行猛将迎新之旅,是树山乡村微旅行的冬季旅游线路四川平武云端之上美似仙境来源原创稿天接云涛连晓雾,星河欲转千帆舞。冬日清晨,四川省绵阳市平武县城近郊持续出现冬日云海景观。高空俯瞰,云海波涛翻滚,浩瀚缥缈,蔚为壮观。天接云涛连晓雾。胡宇摄凭栏远眺,漫漫云寿宁守护木拱廊桥,擦亮文化名片!寿宁县文体和旅游局栏目协办下党峦峰桥龚健摄徐徐展开北宋传世名画清明上河图,只见画卷中部一座状若飞虹的木拱桥横跨汴河,全卷的情节高潮就发生在此处,令观者过目难忘。千百年来,木拱桥传统山西稷山坐拥7处国家级文化宝藏山西运城稷山县文化底蕴深厚,县内有稷王庙大佛寺青龙寺宋金墓法王庙玉壁城遗址北阳城砖塔等7处国家级文化保护单位。图说玉璧城遗址来源网络位于稷山县内的稷山稷王庙,又称后稷祠,始建于元至节后继续约起来!兵团这两条线路值得一去乡村四时好风光景点概览animateanimateanimateanimateanimateanimateanimateanimate精选线路在新春佳节之际,文化和旅游部推出乡村四贵阳青岩古镇人头攒动1月25日,阳光明媚的贵州省贵阳市花溪区青岩古镇,红火的灯笼五颜六色的宫灯彩旗喜庆的春联等交相辉映,呈现出热烈喜庆欢乐祥和的节日氛围,吸引着众多游客前来观光休闲品美食,感受浓浓的年过年丨新春好风光!平顶山河滨公园游人如织赏景忙大河网讯尽管已经到了春节假期的尾声,但是平顶山市民出游的热情依旧不减。1月27日,大河网记者来到平顶山市河滨公园内,实地探访市民游园的景象。河滨公园动物园里,游客通过风车走廊。高高打卡潮点澳门色彩最缤纷的三片街区,带你这样逛!兔年大吉正值农历新春假期,不少旅客来澳感受浓厚的节日气氛!除了富丽堂皇的路氹城酒店大三巴议事亭前地等著名景点,其实澳门还有不少色彩缤纷的街区值得你去探索!今天,就带大家走街串巷,发
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网