SSH免密登录原理及实现

声明:作者原创,转载注明出处。

作者:帅气陈吃苹果

一、SSH简介

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

  1. RSA:非对称加密算法,其安全性基于极其困难的大整数的分解(两个素数的乘积);

  2. DSA:也是非对称加密算法,其安全性基于整数有限域离散对数难题;

二、SSH免密登陆原理

这里写图片描述

三、SSH免密登陆

服务器环境:

机器用户名密码
masterhadoophadoop
slave1hadoophadoop
slave2hadoophadoop

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/zwx19921215/article/details/19641345
https://www.cnblogs.com/nexiyi/archive/2013/01/06/2847865.html

SSH免密登录原理是利用SSH公钥认证机制,即在客户端生成公钥和私钥,将公钥传输到服务器端,并将私钥保存在客户端。当客户端连接服务器时,服务器会向客户端发起挑战,客户端使用私钥对挑战进行签名,并将签名返回给服务器服务器使用之前保存的公钥进行验证,验证通过后即可免密登录。 以下是实现SSH免密登录的步骤: 1. 在客户端上使用ssh-keygen命令生成公钥和私钥,命令格式如下: ``` ssh-keygen -t rsa ``` 2. 将生成的公钥传输到服务器端,可以使用ssh-copy-id命令,命令格式如下: ``` ssh-copy-id user@server ``` 这将会把公钥复制到服务器的~/.ssh/authorized_keys文件中。 3. 在客户端上保存私钥文件,通常保存在~/.ssh目录下。 4. 确保服务器端配置文件/etc/ssh/sshd_config中的PubkeyAuthentication参数为yes,表示启用公钥认证。 5. 确认客户端和服务器端的ssh服务都已经启动,然后就可以尝试使用ssh命令连接服务器,此时就不需要输入密码了。 ``` ssh user@server ``` 注意事项: 1. 在使用ssh-keygen生成公私钥时,可以根据需要设置密码,加强私钥的安全性。 2. 在使用ssh-copy-id将公钥复制到服务器端时,需要输入密码。 3. 为了安全起见,建议只将公钥复制到需要免密登录服务器上。如果需要在多台服务器之间进行免密登录,需要在每台服务器上重复执行以上步骤。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值