經過echo "password" |passwd --stdin user命令改密碼引起的問題

   出於安全考慮,公司要求對阿里雲上的部分服務器修改root密碼,其中服務器中有一臺Centos和若干臺ubuntu。在我很慎重地更改了密碼以後,沒想到仍是出了問題,有一臺服務器ssh登陸不上去了。ubuntu

   當時考慮到有兩個可能:安全

   1.有多是ssh配置文件沒有打開,PermitRootLogin yes(剛剛升級過ssh,這個緣由也是可能的)服務器

   2.密碼錯誤ssh

   往回梳理,發現這臺服務器是Centos的,而且是用複製粘貼echo "LN3T!854qq" |passwd --stdin root 這條命令來更改的密碼,理應不可能出錯的。因此懷疑是ssh的問題,經過阿里雲終端登陸服務器來驗證,發現仍然不能登陸服務器,因此應該不是ssh的問題。ide

   回到密碼自己,考慮會不會是這條命令出了問題。找到另外一臺Centos服務器來測試這條命令,問題就出現了,發現這條根本不能執行成功。測試

wKiom1imbIyQx7ZVAAAQajYsb5Y281.png-wh_50

然而,這裏沒法執行成功,但是以前明明是執行成功了的,這是矛盾的。把"!"換成"#"再執行一遍命令,密碼就更改爲功了,因此,問題就是出在了密碼中有"!"。繼續測試echo命令和"!",知道了"!"在echo中是有不一樣意義的,若是要輸出"!",就須要"\"來轉譯。阿里雲

wKioL1imboTTkIyaAAATheaCoVQ517.png-wh_50

   最後,實在沒辦法,只能經過阿里雲終端重置密碼,而後得到容許重啓了服務器,最終才登陸了服務器。經過history命令查看操做歷史紀錄,看到echo "LN3T!854qq" |passwd --stdin root這條命令確實執行成功了,而且把密碼更改了,應該是出現了bug。3d

wKiom1imb8KBZ0fWAAAHr_PbmjU985.png-wh_50

   問題最終找到了,也解決了。經過這件事,也有一些收穫:blog

   1.設置密碼最好不要使用echo "password" |passwd --stdin user 這條命令,一是不安全,經過history能夠看到密碼,二是不肯定因素太多,設置密碼容易出錯,具體echo的用法能夠上網搜索查看;get

   2.一臺服務器至少應該設置兩個用戶,一個是root,另一個是擁有root權限的普通用戶(經過配置/etc/sudoers能夠實現),這樣就可以保證一個密碼出錯後還能夠經過另一個用戶登陸服務器重置密碼,;

   3.經過passwd user 命令更改密碼,密碼中出現的符號不包含其餘意義,僅僅是做爲符號自己來使用,這種方法設置密碼更安全。

相關文章
相關標籤/搜索