linux配置ssh互信实现免密登陆
公钥认证的基本思想
对信息的加密和解密采用不同的key,这对key分别称作private key(私钥)和public key(公钥),其中,public key存放在欲登录的服务器上,而private key为特定的客户机所持有。当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的public key列表。
配置ssh互信的步骤如下
- 1. 首先,在要配置互信的机器上,生成各自的经过认证的key文件;
- 2. 其次,将所有的key文件汇总到一个总的认证文件中;
- 3. 将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去;
- 4. 验证互信。
需求:四台Linux主机,IP地址为192.168.8.10/11/12/13,配置登录用户的互信。 在每个节点上创建 RSA密钥和公钥(以root用户为例):
mkdir ~/.ssh # 创建ssh key保存目录,如果已存在请护绿
chmod 700 ~/.ssh # 安全起见,除属主用户外其他用户和组都不能访问
cd ~/.ssh # 进入.ssh目录
ssh-keygen -t rsa 或者 ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa # 使用rsa加密
在8.10上汇总,将所有的公钥文件汇总到一个总的授权key文件中:
ssh -p 2016 192.168.8.10 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh -p 2016 192.168.8.11 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh -p 2016 192.168.8.12 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh -p 2016 192.168.8.13 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
出于安全性考虑,将这个授权key文件赋予600权限:
chmod 600 ~/.ssh/authorized_keys
在8.10上将这个包含了所有互信机器认证key的认证文件,分发到各个机器(8.11/8.12/8.13)中去
scp ~/.ssh/authorized_keys 192.168.8.11:~/.ssh/
scp ~/.ssh/authorized_keys 192.168.8.12:~/.ssh/
scp ~/.ssh/authorized_keys 192.168.8.13:~/.ssh/
验证互信,各节点执行下面命令,能不输入密码显示时间,配置成功
ssh 192.168.8.10 date;ssh 192.168.8.11 date;ssh 192.168.8.12 date;ssh 192.168.8.13 date;
Tue Aug 29 22:38:06 CST 2017
参考资料: Alfred Zhao:http://www.cnblogs.com/jyzhao/p/3781072.html 撒哈拉企鹅:http://blog.chinaunix.net/uid-16979052-id-3568036.html
- 复仇行动:Notepad++官网被圣战组织黑了
- 四大组件的纽带——Intent
- 利用HTC One漏洞破解手机PIN密码
- Android NDk环境配置
- 谷歌再曝Windows8.1漏洞,微软怒了
- Python机器学习的生态系统
- TP-link TL-WR840N系列路由器存在CSRF漏洞,可修改任意配置(含POC测试过程)
- JavaScript严格模式
- 微软修复8个安全漏洞,包括谷歌披露的0day漏洞
- PullToRefreshScrollView 嵌套RecyclerView实现特卖列表倒计时抢购
- 全栈数据工程师养成攻略:Python 基本语法
- 从卷积神经网络的角度看世界
- 外观模式
- 透析挖洞神器mona.py插件新特性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于Android短信验证码的获取的示例
- Linux下制作给ARM开发板使用的文件系统
- Android开发之ProgressBar字体随着进度条的加载而滚动
- Android 动态注册监听网络变化实例详解
- linux 服务器自动备份脚本的方法(mysql、附件备份)
- 详解Android中Glide与CircleImageView加载圆形图片的问题
- android全局监控click事件的四种方式(小结)
- Linux下如何永久修改主机名的方法步骤
- android与asp.net服务端共享session的方法详解
- Android实现多个连续带数字圆圈效果
- Android录制mp3格式文件
- Linux内核设备驱动之虚拟文件系统笔记整理
- linux服务器上使用nginx访问本地静态资源的方法
- Android控件之菜单的创建方式
- 可支持快速搜索筛选的Android自定义选择控件