- Linux互信的由来
在当前的服务器操作系统中,Linux操作系统占多数,接触过Linux系统的人都知道:通常情况下,登陆Linux系统需要输入用户名和密码。
用户名和密码本身是一种安全认证机制,可以很好地增加系统的安全性,但另一方面,这种认证机制在某些场景下就显得不太方便了。
比如需要在两台Linux之间频繁的拷贝文件(scp命令),每次都要输入用户密码就显得太麻烦了。
又比如,在系统故障应急时,需要通过堡垒机转登陆到其他Linux机器,需要输入用户密码就太浪费时间了,一是密码要随时记着,不记得还登陆不了,二是输入密码需要时间,这就无形地增加了应急的时间开销。你可知道,大型企业的重要系统应急时间是非常宝贵的,分秒必争。
因此,为了登陆Linux系统而不需要输入密码,Linux互信便应运而生。
- Linux互信的内涵
Linux互信,顾名思义,就是Linux系统间互相信任。如何信任?那就是登陆Linux系统只需指定用户名即可,不需要输入密码。
例如:ssh user@192.168.1.1便可直接登陆192.168.1.1的user用户。
又例如传输文件:scp test.txt user@192.168.1.1,可以免密码拷贝文件。
- Linux互信的实现
Linux互信的实现,主导思想是:将公钥传给远程机器,登陆远程机器时,便可免密登陆。
其实现过程主要分为两步:
第一步:本地生成ssh公钥。命令如下:
ssh-keygen -t rsa
第二步:将本地的ssh公钥拷贝到远程机器上。命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.1
- Linux添加互信失败
在实际操作中,按照添加互信的步骤添加互信后,也可能出现很奇怪的现象:连接(ssh或者scp等)远程互信的机器还是需要输入密码,之前此方法在其他场景中屡试不爽,现如今确失灵了,难免很郁闷。
出现了问题,得分析,从哪里入手分析呢?这时我们想到了日志,如果有个地方记录了日志,那么就可以看看日志中是否有相关报错,然后根据报错信息进行分析。
果不其然,Linux记录了其他机器连接本机的日志,这个日志就是/var/log/secure,这个文件的权限可能只有root才能访问,具体看机器的设置。通过查看日志内容,出现了如下报错信息:
Authentication refused: bad ownership or modes for directory /home/HisData
备注:我实验中,连接是远程机器的HisData用户。
通过日志可以看出,免密登陆被拒绝了,难怪添加互信后还需要输入密码。
根据报错信息,我们进一步分析得出:应该是/home/HisData目录的权限或者模式不对。
经过反复实验试错,我们得出以下结论:
/home/HisData目录权限有问题,正确的权限如下:
u(本用户):一定要有x(可执行)权限;
g(本组用户):不能有写权限;
o(其他组用户):不能有写权限;
按照目录权限的要求更改目录权限,互信添加失败问题得到解决,访问远程机器不需要输入密码。
- 总结
1、Linux互信可以解决免密码访问的问题;
2、出现了问题,从日志入手分析,互信访问日志为/var/log/secure;
3、添加互信是有条件的,否则添加不成功。条件就是远程机器的/home/user(具体用户)目录权限要满足以下要求:u(本用户):一定要有x(可执行)权限;g(本组用户):不能有写权限;o(其他组用户):不能有写权限。