ssh 免密码登录 与 密钥公钥原理讲解
前言
由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。
由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。
通过阅读ssh 公钥私钥认证操作及原理以及ssh公钥登陆。成功实现了自己的需求。
下面来说下讲解公钥密钥的工作原理以及ssh免密登录的实现步骤。
公钥密钥原理概述
在课程计算机基础中,我记得是学过公钥密钥的,公钥和密钥是同时生成的。
公钥用于加密,私钥用于解密。
公钥是很多人可以持有,而密钥只能自己持有。
在ssh中,只需公钥放在服务器A上,那么你就可以通过私钥登录服务器A。
当你连接已放置你公钥服务器A时,服务器A和客户端之间大概存在以下认证流程。
(以下认证流程来自博客:ssh 公钥私钥认证操作及原理)
为了说明方便,以下将使用这些符号。
| Ac | 客户端公钥 |
| Bc | 客户端密钥 |
| As | 服务器公钥 |
| Bs | 服务器密钥 |
认证过程分为两个步骤。在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。
- 会话密钥(session key)生成
- 客户端请求连接服务器,服务器将 As 发送给客户端。
- 服务器生成会话ID(session id),设为 p,发送给客户端。
- 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
- 客户端将 r 用 As 进行加密,结果发送给服务器。
- 服务器用 Bs 进行解密,获得 r。
- 服务器进行 r xor p 的运算,获得 q。
- 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
- 认证
- 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
- 客户端使用 Bc 解密 S(x) 得到 x
- 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
- 服务器计算 q + x 的 md5 值 m(q+x)
- 客户端将 n(q+x) 发送给服务器
- 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功
ssh免密登录实验步骤
(实验环境:Ubuntu 17)
1. 若还没安装ssh服务的同学,请先安装。
sudo apt-get install ssh
本文博客地址:http://www.cnblogs.com/toulanboy/
2. 进入家目录下的.ssh文件夹
(若没有该目录,请创建。)
cd ~/.ssh
3. 生成密钥对
(中途会让你输入密钥对的密码,由于我们想免密,故按回车跳过即可。)
(假如设置了,后面通过私钥连接服务器时,则需要输入密钥对的密码。)
ssh-keygen -t rsa
4. 将客户端.ssh目录下的id_rsa.pub复制到服务器A的家目录下
(下面指令的115.115.115.115是服务器IP,lgq是你想登录服务器的用户名)
scp id_rsa.pub lgq@115.115.115.115:~/
5. 在服务器A上,将客户端的id_rsa.pub追加到服务器的ssh的认证列表中
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
6. 客户端后面直接可以通过私钥免密登录了。
ssh lgq@115.115.115.115
至此完毕。希望对你有帮助。
参考:ssh 公钥私钥认证操作及原理以及ssh公钥登陆。
ssh 免密码登录 与 密钥公钥原理讲解的更多相关文章
- ssh 免密码登录配置,及其原理
1.废话不多说,先上图 2. 典型的RSA非对称加密 RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MI ...
- Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】
本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...
- ssh免密码登录机器(使用公钥和秘钥进行加密来实现)
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 登录的原理: 有机器A(192.168.1.155),B(192.168.1. ...
- ssh免密码登录之分发密钥
ssh免密码登录之分发密钥 1.ssh免密码登录 密码登录和密钥登录有什么不同? 密码登录(口令登录),每次登录都需要发送密码(ssh) 密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙 1.1 ...
- 如何配置ssh免密码登录
[TOC] 如果你在管理一堆unix机器,每次登录都要输入密码是挺烦的事情,一方面为了安全我们一般不会将所有机器的密码都设置成一样,另一方面就算一样每次都输入一遍也很麻烦. 这种情况下我们一般是用ss ...
- 配置Ssh免密码登录
配置Ssh免密码登录 一个master节点,两个client节点(client1.client2) 1.所有节点创建hadoop用户,并设置密码 以root账号登录: useradd hadoop p ...
- [Hadoop] - SSH免密码登录
在安装hadoop之前需要进行ssh免密码登录,ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Redhat为例. 我这里只采用一台机器A(10. ...
- Hadoop集群搭建过程中ssh免密码登录(二)
一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...
- 多台CentOS服务器下实现SSH免密码登录
ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...
随机推荐
- bzoj1458士兵占领
传送门 和上一题差不多,每行和每列分别看做一个点,障碍点坐标的行和列就不建边,再按照有源汇上下界建图就好了,唯一的区别就是这个题求的是最小流 这个题的数据好水呢,建错图也能A呢 #include< ...
- B - Halloween Costumes
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- go系列(4)- go环境和docker容器的使用
这篇文章讲述把go环境及beego框架装进容器.docker的安装该篇不讲述,请自行查阅.本篇是基于docker已经安装的前提. 跟据前三篇系列,然后写Dockerfile,一般是到项目的根目录下 1 ...
- jave 计算音视频时长
File source = new File("视频.mp4"); Encoder encoder = new Encoder(); try { MultimediaInfo in ...
- Codeforces Round #390 (Div. 2) B
Ilya is an experienced player in tic-tac-toe on the 4 × 4 field. He always starts and plays with Xs. ...
- HTML表格的基本结构标记
<table>标记 1.基本格式:<table 属性1="属性值1" 属性2="属性值2" ... ...>表格内容</table ...
- D - 連結 / Connectivity 并查集
http://abc049.contest.atcoder.jp/tasks/arc065_b 一开始做这题的时候,就直接蒙逼了,n是2e5,如果真的要算出每一个节点u能否到达任意一个节点i,这不是f ...
- SimpleDateFormat 如何安全的使用?
前言 为什么会写这篇文章?因为这些天在看<阿里巴巴开发手册详尽版>,没看过的可以关注微信公众号:zhisheng,回复关键字:阿里巴巴开发手册详尽版 就可以获得. 关注我 转载请务必注明 ...
- AJAX的JSON方式传回方法
AJAX返回数据的类型有两种,一种是TEXT类型,一种是JSON类型. 使用TEXT类型,访问数据库后将结果拼接成字符串,返回时在拆分成数组使用. JSON直接将结果转成JSON数据,返回时直接使用. ...
- C语言abs函数
C语言编程入门教程 - abs 函数是用来求整数的绝对值的. //函数名:abs //功 能:求整数的绝对值 //用 法:int abs(int i); //程序例: #include<stdi ...