一个诡异SSH密钥认证的问题总结

步骤:
A-server  公钥私钥生成服务器
B-client  公钥
C-client  公钥

 

从A copy 公钥 到B与C服务器上

成功后可以ssh zhangjie@B_ip

然后执行
/usr/bin/rsync  -avz -P -e 'ssh -p 22' /tmp/zhangjie/ zhangjie@192.168.2.106:~

这里要注意的是使用rsync -avz参数并且/tmp/zhangjie/这个后面加了“/”
第一次执行是没有问题的


执行完后再次登录B服务器,(假如B服务器ip :192.168.2.106)则提示要密码了
[zhangjie@A-server /]$ ssh zhangjie@192.168.2.106
zhangjie@192.168.2.106's password:

分析:经过对比对端/home/zhangjie的家目录权限发现执行完如上rsync命令后权限变了
drwxrwxr-x 5 zhangjie zhangjie 4096 Jun 10 13:15 .  执行完rsync后的权限
drwx------ 5 zhangjie zhangjie 4096 Aug 21 06:02 .  未执行rsync的权限

原因是如果在执行 rsync 在目录后面加/的话,会改变对端家目录的权限,而ssh登录需要家目录是700权限

可以按照如下不加/执行就没有问题
/usr/bin/rsync  -avz -P -e 'ssh -p 22' /tmp/zhangjie zhangjie@192.168.2.106:~