经过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 命令更改密码,密码中出现的符号不包含其余意义,仅仅是做为符号自己来使用,这种方法设置密码更安全。

相关文章
相关标签/搜索