ssh 免密码登录 与 密钥公钥原理讲解

Easter79
• 阅读 1484

前言

由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。

由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。

通过阅读ssh 公钥私钥认证操作及原理以及ssh公钥登陆。成功实现了自己的需求。

下面来说下讲解公钥密钥的工作原理以及ssh免密登录的实现步骤。

公钥密钥原理概述

在课程计算机基础中,我记得是学过公钥密钥的,公钥和密钥是同时生成的。

公钥用于加密,私钥用于解密。

公钥是很多人可以持有,而密钥只能自己持有。

在ssh中,只需公钥放在服务器A上,那么你就可以通过私钥登录服务器A。

当你连接已放置你公钥服务器A时,服务器A和客户端之间大概存在以下认证流程。

(以下认证流程来自博客:ssh 公钥私钥认证操作及原理

为了说明方便,以下将使用这些符号。

Ac

客户端公钥

Bc

客户端密钥

As

服务器公钥

Bs

服务器密钥

认证过程分为两个步骤。在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

  1. 会话密钥(session key)生成
    1. 客户端请求连接服务器,服务器将 As 发送给客户端。
    2. 服务器生成会话ID(session id),设为 p,发送给客户端。
    3. 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
    4. 客户端将 r 用 As 进行加密,结果发送给服务器。
    5. 服务器用 Bs 进行解密,获得 r。
    6. 服务器进行 r xor p 的运算,获得 q。
    7. 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
  2. 认证
    1. 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
    2. 客户端使用 Bc 解密 S(x) 得到 x
    3. 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
    4. 服务器计算 q + x 的 md5 值 m(q+x)
    5. 客户端将 n(q+x) 发送给服务器
    6. 服务器比较 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公钥登陆

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
lucien-ma lucien-ma
2年前
Git避免每次都要输入密码,SSH公钥的生成和绑定
设置本机绑定SSH公钥,实现免密码登录在我们平时写完代码提交的时候,每次都要输入账号和密码,很烦很烦,浪费时间,这篇文章的目的就是为了让大家变的更加轻松配置SSH公钥实现免密提交:生成公钥sshkeygentrsa然后在C:\Users\ASUS\.ssh路径下找到idrsa.pub文件将里面的内容复制(ASUS是我当前用户的用户名
Chase620 Chase620
3年前
ssh-keygen详解
sshkeygen用来生成ssh公钥认证所需的公钥和私钥文件。ssh秘钥登录特点:1.安全;2.免输密码。对于安全级别较高的服务器,建议配好ssh登录后禁掉密码登录。缺点:略繁琐。如果你的只是临时登录一次,那么还是密码吧。一、生成秘钥秘钥对需要在你自己的机器上生成,然后把公钥放到服务器相应用户的~/.ssh目录执行下面命令,默认
Wesley13 Wesley13
2年前
SSH公钥免密登录其他主机
在多台主机之间使用SSH免密登录,假设主机A免密登录主机B:1\.在主机A上生成自己的ssh公钥:root@A~sshkeygentrsa执行上面命令,一路回车,完成后,会在~/.ssh目录下生成2个文件:id\_rsa(私钥)和id\_rsa.pub(公钥)2\.将主机A上生成的公钥
Easter79 Easter79
2年前
ssh连接服务器
1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh
Stella981 Stella981
2年前
Git使用总结
生成密钥1.打开GitBash,运行  \_sshkeygen  \_2.密钥生成空间\_~/.ssh/id\_rsa  \_(C:/User/.ssh)3.输入密码(不输入增直接回车跳过)4._~/.ssh/id\_rsa.pub_ (公钥), _id\_rsa_ (私钥)下载代码到本地
Stella981 Stella981
2年前
Linux单向免密登录最简配置
前置:两台linux,A和B需求:A免密登录B步骤:root用户登录A输入命令:sshkeygen之后一路按回车完成后进行公钥分发命令:sshcopyidi/root/.ssh/id\_rsa.pubB的IP示例:sshcopyidi/root/.ssh/id\_rsa.pub192.168.1
Stella981 Stella981
2年前
Linux配置SSH免密码登录
CentOS配置SSH免密码登录为例说明:SSH远程登录的安全外壳协议有两种身份认证机制:\用户名密码\密钥登录环境准备host1:192.168.0.10host2:192.168.0.11下面以host1ssh免密码登录到host2为例,进行说明1、在host1主机下生成私钥/公钥对执行如下命
Stella981 Stella981
2年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k