SSH免密登陆原理及实现

贾宝玉
• 阅读 6606
声明:作者原创,转载注明出处。

作者:帅气陈吃苹果

一、SSH简介

SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA、DSA等。

  1. RSA:非对称加密算法,其安全性基于极其困难的大整数的分解(两个素数的乘积);
  2. DSA:也是非对称加密算法,其安全性基于整数有限域离散对数难题;

二、SSH免密登陆原理

SSH免密登陆原理及实现

三、SSH免密登陆

服务器环境:

机器 用户名 密码
master hadoop hadoop
slave1 hadoop hadoop
slave2 hadoop hadoop

1、生成密钥

分别在master、slave1、slave2机器的用户家目录(/home/hadoop/)下,执行下列命令,通过RSA算法进行加密,提示输入的话可直接回车不输入任何内容:

ssh-keygen -t rsa

将会在家目录下的隐藏目录/.ssh下生成文件:

id_rsa.pub         //公钥    
id_rsa             //密钥

2、追加公钥

在master机器上,将id_rsa.pub的内容写入authorized_keys文件中

cat id_rsa.pub >> authorized_keys

3、发送其他服务器公钥

在slave1机器上,将id_rsa.pub复制到master机器的/.ssh目录下,并重新命名位
id_rsa.pub.slave1

scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.slave1

在slave2机器上,将id_rsa.pub复制到master机器的/.ssh目录下,并重新命名位id_rsa.pub.slave2

scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.slave2

4、追加其他服务器公钥

在master机器上,在/.ssh目录下将看到从slave1、slave2发送过来的文件:

id_rsa.pub.slave1
id_rsa.pub.slave2

将这两个公钥内容追加写入到master机器/.ssh目录下的authorized_keys中:

cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys

5、确认公钥内容

在master机器上,查看authorized_keys文件内容,确认包含slave1、slave2机器的两个公钥内容:

cat authorized_keys

6、发送authorized_keys

在master机器上,将authorized_keys发送到slave1、slave2机器的/.ssh目录下:

scp authorized_keys hadoop@slave1:/home/hadoop/.ssh/
scp authorized_keys hadoop@slave2:/home/hadoop/.ssh/

7、修改authorized_keys文件权限

分别在master、slave1、slave2机器上执行,对auhorized_keys进行权限修改,否则将无法实现免密码登录:

chmod 600 authorized_keys

8、SSH登陆测试

在master机器上,从master机器通过ssh登录到slave1,第一次需要密码,退出后以后登录就不需要密码了,其他机器类似操作:

//登陆slave1
ssh slave1

//登陆后退出
exit

//重新登陆
ssh slave1

参考链接:
http://blog.csdn.net/zwx19921...
https://www.cnblogs.com/nexiy...

最后,欢迎指正。喜欢的话,点个赞呗,请你吃苹果。
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
ssh 免密码登录 与 密钥公钥原理讲解
前言由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。通过阅读ssh公钥私钥认证操作及原理(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fliu
Wesley13 Wesley13
3年前
SSH公钥免密登录其他主机
在多台主机之间使用SSH免密登录,假设主机A免密登录主机B:1\.在主机A上生成自己的ssh公钥:root@A~sshkeygentrsa执行上面命令,一路回车,完成后,会在~/.ssh目录下生成2个文件:id\_rsa(私钥)和id\_rsa.pub(公钥)2\.将主机A上生成的公钥
Stella981 Stella981
3年前
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
3年前
Jenkins入门(四)自动部署Jar到远程服务器
1\.配置远程服务器SSH免密登录1.本地客户端生成公私钥(一路回车默认即可),会在用户目录.ssh文件夹下创建公私钥localuser@localhost.ssh$sshkeygenlocaluser@localhost.ssh$lsid_rsaid_rs
Stella981 Stella981
3年前
Redis 2.8.9源码
本文为作者原创,转载请注明出处:http://my.oschina.net/fuckphp/blog/505956(http://my.oschina.net/fuckphp/blog/505956)            Redis的ae模块的代码主要分布在ae.cae.h还有ae\_\.c中,分别实现了epoll、evpo
Stella981 Stella981
3年前
FFmpeg数据结构AVPacket
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure\_chn/p/10410320.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fleisure_chn%2Fp%2F10410320.html)
Wesley13 Wesley13
3年前
ubuntu 使用ssh登录github 避免提交时输入用户名和密码
原文链接: ubuntu使用ssh登录github避免提交时输入用户名和密码(https://my.oschina.net/ahaoboy/blog/3120961)ssh免密需要使用ssh方式clone仓库本地安装gitsudoaptgetupdatesudoaptgetinstallgit在用户主目录
Stella981 Stella981
3年前
Hadoop2.7.1集群安装笔记
环境准备centos免登陆设置  在主机master上cd ~/.ssh                如果没有该目录,先执行一次ssh localhostrm ./id_rsa             删除之前生成的公匙(如果有)sshkeygen t rsa        一
可莉 可莉
3年前
2018java面试集合
作者:刘成链接:https://www.zhihu.com/question/266822548/answer/317700943来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。另一个java后端面试总结:http://www.cnblogs.com/java1024/p/7685400.html39
Stella981 Stella981
3年前
PyCharm2020激活破解教程
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12767075.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fxuexianqi%2Fp%2F12767075.
Stella981 Stella981
3年前
C++笔记002:VS2010报错:LINK fatal error LNK1123 转换到 COFF 期间失败文件无效或损坏
 原创笔记,转载请注明出处!点击【关注】,关注也是一种美德~错误描述:1已启动生成:项目:FirstCode,配置:DebugWin321生成启动时间为2018/2/521:00:30。1InitializeBuildStatus:1 正在