CenOS SSH无密码登录
系统环境:CentOS6.8
软件环境:SSH(yum -y install openssh-clients)
IP 地址:192.168.0.188
用户环境:root、xiaoming
系统内置root,创建xiaoming角色的步骤如下
- adduser xiaoming -s /bin/bash (创建用户名称,并且使用的shell为/bin/bash)
- passwd xiaoming,会提示输入密码,连续输入两次相同的密码 (如果创建的用户没有设置密码,则会失败。测试的方法:Log Out->xiaoming,使用密码是否可以登录)
操作目的:普通的ssh进行Linux连接,会提示输入密码。通过一系列的配置可以省略密码的输入,直接登录。使用root账户无密码登录xiaoming
操作步骤:
- 切换到root
- cd ~ 切换到当前角色的home空间
- ssh-keygen -t rsa 连续三次回车。(第一次回车:确定生成的私(公)钥的存放路径和文件名称。后两次回车用于在生成的私钥中加入自定义的混杂的数据信息。增加加密强度)。都默认即可。
- ls -al ~/.ssh/ id_rsa id_rsa.pub 如果存在着两个文件,则表示密钥生成成功
- ssh-copy-id -i ~/.ssh/id_rsa.pub xiaoming@ 192.168.0.188 回车进行确认。并输入远程主机对于角色的登录密码进行验证。
- ssh xiaoming@192.168.0.188 则可以进行无密码远程登录
知识拓展:
SSH安全验证,是一种"非对称性密钥系统",即公钥私钥加密系统。公钥(public key)用于加密数据,任何人都可以拥有。私钥(private key)用于解密,只能拥有着自己拥有。公钥加密后的数据,只能用私钥才能解密。其安全验证分为两种方式
- 口令安全验证
验证流程
- 客户端向远程主机发出请求
- 远程主机接受请求,并返回远程知己的公钥
- 客户端确定接受远程主机返回的信息,并通过远程主机的公钥加密登录密码,同时并携带客户端自己的公钥再次发送请求
- 远程主机接受客户端的请求,并通过私钥解密客户端通过公钥加密的登录密码,如果匹配成功。则建立的可信任的连接。并且把客户端的公钥存放到~/ssh/know_hosts中。至此,双方基于公(私)钥的加密解密进行安全通信
上述流程中,连接的远程主机可以会被其他远程主机劫持,即实际请求的远程主机并不是真正要请求的远程主机。伪装的远程主机可以发送自己的公钥给客户端,以此欺骗客户端获取客户端的公钥信息。进行任意操作。所以在客户端在第一次接受远程主机返回的信息时。会进行一次主机"指纹密钥"验证,以确定连接的远程主机的正确性。如果确定,则会记录到客户端当前用户的~/.ssh/know_hosts文件中。接下来进行连接远程主机的密码登录验证。当客户端再次发送同一个远程主机的请求,求会把远程主机的"指纹密钥"和know_hosts中记录的进行比对。不存在,则需要用户进行远程主机身份的确认。存在,则直接让客户端输入登录远程主机的密钥进行下一步的操作
2. 密钥安全验证
验证过程
在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上(参考上面的案例操作)。并存储在服务器当前用户的~/.ssh/authorized_keys文件中。
认证过程分为两个步骤。
1. 会话密 钥(session key)生成
1. 客户端请求连接服务器,服务器将自己的公钥(Public Key)发送给客户端。
2. 服务器生成会话SSID(session id)发送给客户端。
3. 客户端生成会话密钥CSID(session key),并计算 r = SSID xor CSID。
4. 客户端将r用服务端公钥(Public Key)进行加密,结果发送给服务器。
5. 服务器用密钥(Private Key)进行解密,获得r。
6. 服务器进行 r xor SSID 的运算,获得 CSID。
7. 至此服务器和客户端都知道了会话密钥SCID,以后的传输都将被SSID加密。
2. 认证
1. 服务器生成随机数,并用客户端的公钥(Public Key)加密,发送给客户端
2. 客户端使用密钥(Private Key)解密服务端加密的数据得到服务端的随机数
3. 客户端把随机数和生成的会话密钥进行MD5进行加密和服务端进行对比(服务端同时也把自己生成的会话ID和随机数通过MD5加密),比对成功,则进行双方的通信
最新文章
- 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
- hdu 4329
- json学习系列(2)-生成JSONObject的方法
- AS与JS相互通信(Flex中调用js函数)
- 感知器算法PLA
- makefile debug
- 暂时告别Solr了
- python network programming tutorial
- Google 视频编码格式 VP9 究竟厉害在哪里
- Python字符串和日期相互转换的方法
- MySql数据库通过idb和frm恢复
- Python 操作excel之 openpyxl模块
- 解决Android SDK下载和更新失败问题
- JavaScript在页面中的引用方法
- Android组件--意图(Intent)
- MapReduce Design Patterns(chapter 2(part 1))(二)
- 红黑树(R-B Tree)
- android异常Unable to instantiate activity ComponentInfo解决方法
- 添加网站标题logo
- 错误:为 Web 项目“XXX”配置的 URL“http://localhost/”的网站同时存在于本地 IIS Web 服务器和 IIS Express Web 服务器上。您需要使用 IIS 管理器在 IIS 中更改此网站的绑定。