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加密),比对成功,则进行双方的通信
CenOS SSH无密码登录的更多相关文章
- 普通用户ssh无密码登录设置
这段时间在做Hadoop的环境配置,用root用户只需要按照一定的步骤进行操作就可以直接实现无密码登录,但如果使用新建用户,怎么尝试都不行. 本帖大部分都是其他人帖子的内容.如果按照下面的步骤还是不能 ...
- CentOS下SSH无密码登录的配置
1.确认本机sshd的配置文件(需要root权限) $ gedit /etc/ssh/sshd_config 找到以下内容,并去掉注释符"#" RSAAuthentication ...
- ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)
转自:http://blog.csdn.net/pennyliang/article/details/8556662 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访 ...
- ssh 无密码登录
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想 ...
- CentOS配置ssh无密码登录
CentOS配置ssh无密码登录的注意点 前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...
- 【转发】SSH无密码登录的配置
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:http://cn.soulmachine.me/ 原文地址:http ...
- CentOS 下SSH无密码登录的配置
CentOS 下SSH无密码登录的配置 最近学习Hadoop.它要求各节点之间通过SSH无密码登录,配置SSH的时候费了一番功夫,记录下来,以备忘. 配置SSH无密码登录需要3步: 1.生成公钥和私钥 ...
- Linux实现SSH无密码登录(对目录权限的设置非常详细,可以参考一下)
假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org 客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn 客户端用户yzha ...
- 使用ssh无密码登录
使用ssh无密码登录 ssh 是一个专为远程登录会话和其他网络服务提供安全性的协议.默认状态下ssh链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和 ...
随机推荐
- lvs + keepalived + nginx + tomcat高可用负载反向代理服务器配置(三) Nginx
1. 安装 sudo apt-get install nginx 2. 配置nginx sudo gedit /etc/nginx/nginx.conf user www-data; worker_ ...
- 用maven创建Spring MVC项目
用maven创建Spring MVC项目 mvn archetype:generate -DgroupId=fry-arthur -DartifactId=spring-mvc-study -Darc ...
- Docker系列(十六):搭建Openshift环境
目的: 搭建Linux下的Openshift环境. 参考资料: 开源容器云OpenShift 构建基于Kubernetes的企业应用云平台 ,陈耿 ,P253 ,2017.06 .pdf 下载地址:h ...
- <每日一题>题目28:简单的python练习题(51-60)
#51.一行代码实现1-100的和 sum(range(1,101)) #52.如何在一个函数内部修改全局变量 ''' 利用global ''' #53.字典如何删除和合并2个字典 ''' del d ...
- Access数据库连接字符串
<connectionStrings> <add name="connStr" connectionString="server=.;uid=home; ...
- ElasticSearch入门之花落红尘(三)
上篇文章散仙介绍了ElasticSearch的入门安装和使用,那么本篇我们来看下,如何使用java api来和ElasticSearch进行交互,简单点说,就是实现一个增删改查,来找找入门的感觉. 在 ...
- elasticsearch river 从数据库中导入数据
Elasticsearch中使用reiver-jdbc导入数据 2014-05-13 15:10 本站整理 浏览(3384) Elasticsearch中使用reiver-jdbc导入数据,有 ...
- python 编码问题:'ascii' codec can't encode characters in position 的解决方案
报错: 'ascii' codec can't encode characters in position 8-50: ordinal not in range(128) Python在安装时,默认的 ...
- ORA-01790: 表达式必须具有与对应表达式相同的数据类型
出现这种错误,要先看一下是不是sql中有用到连接:union,unio all之类的,如果有,需要注意相同名称字段的数据类型一定要相同.
- sql里面插入语句insert后面的values关键字可省略
插入到表名(列值)后跟一个查询语句的话就代表值,简单的说就是后面select select出来的值就是要插入的值,即 insert into tb(字段名一,字段名二)select 字段名一,字段名 ...